Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
274 commits
Select commit Hold shift + click to select a range
6b3a276
tests/discretization/poisson: this test now reads the shape functions…
biancagi Apr 10, 2025
c449df6
discretization: add defaulted and deleted metamethods in {Isoparametr…
biancagi Apr 14, 2025
e5fda60
discretization: improve refactoring of jacobian calculation
biancagi Apr 14, 2025
1466eb9
discretization: implement class {FunctionSpace}
biancagi Apr 14, 2025
f8b3b98
geometry: improve type traits on simplices
biancagi Apr 23, 2025
94169dc
discretization: class {FunctionSpace} now reads {barycentric_coordina…
biancagi Apr 23, 2025
5dffe12
discretization: minor refactoring in {IsoparametricSimplex} class
biancagi Apr 23, 2025
24e2e17
manifolds: add concept for manifold
biancagi Apr 24, 2025
a36570d
discretization: {FunctionSpace} instances are now built from manifold…
biancagi Apr 24, 2025
822d99e
discretization: remove addressed {QUESTION}
biancagi Apr 24, 2025
25b133f
discretization: remove unused variables from poisson test driver
biancagi Apr 24, 2025
ed27042
discretization: minor refactoring in poisson test driver
biancagi Apr 24, 2025
05a24cd
discretization: opt for cholesky solver in poisson test driver
biancagi Apr 24, 2025
77bde82
discretization: bugfix
biancagi Apr 28, 2025
c24d062
solvers: add {print} method to class {PETScKrylovSolver}
biancagi Apr 28, 2025
c867423
discretization: the {FunctionSpace} now returns the shape functions i…
biancagi Apr 29, 2025
61a2523
geometry: bugfix in {geometric_simplex} factories
biancagi Apr 29, 2025
07946b1
discretization: fix a few bugs in the geometric-agnostic boundary con…
biancagi Apr 29, 2025
48a411c
discretization: switch to geometric-agnostic boundary conditions in p…
biancagi Apr 29, 2025
f7c2928
constraints: implement class for a Dirichlet constraint on a portion …
biancagi Apr 30, 2025
bdd35bf
constraints: implement class for a Dirichlet constraint on a portion …
biancagi May 5, 2025
e6ac44a
constraints: implement method to retrieve the constrained nodes for a…
biancagi May 5, 2025
6f8ca74
manifolds: add accessors for mesh and coordinate system attributes in…
biancagi May 5, 2025
a4683c4
discretization: implement class {DiscreteSystem} as a function space …
biancagi May 5, 2025
eeffc9c
discretization: add accessor to manifold in class {FunctionSpace}
biancagi May 5, 2025
0bbb277
discretization: class {FunctionSpace} is now aware of constraints on …
biancagi May 5, 2025
bf489cd
discretization: bugfix in {DiscreteSystem}
biancagi May 7, 2025
f7f4403
discretization: require that the template parameter of class {Isopara…
biancagi May 8, 2025
5eb9250
discretization: fix typo in class {FunctionSpace}
biancagi May 8, 2025
2c8d47d
discretization: fix typo in class {IsoparametricSimplex}
biancagi May 8, 2025
6c9f018
discretization: add sanity check in {IsoparametricSimplex} shape, gra…
biancagi May 8, 2025
57b6632
Revert "discretization: add sanity check in {IsoparametricSimplex} sh…
biancagi May 12, 2025
c17c31d
discretization: major redesign of {FunctionSpace} and {IsoparametricS…
biancagi May 12, 2025
b93d413
discretization: improve injection of the element type in the {Functio…
biancagi May 12, 2025
650c111
discretization: remove redundant specification of the isoparametric s…
biancagi May 12, 2025
f6f1ef2
discretization: formatting edit
biancagi May 12, 2025
2b79f9e
discretization: the order of the finite elements is now a template pa…
biancagi May 12, 2025
50f5ef3
discretization: add requirement that the geometric simplex spatial di…
biancagi May 12, 2025
4bd57ee
discretization: minor redesign of isoparametric triangles
biancagi May 12, 2025
f1aecca
geometry: remove obsolete implementation of {operator==} for {Geometr…
biancagi May 12, 2025
cad6018
discretization: major redesign of {FunctionSpace} based on the concep…
biancagi May 14, 2025
79b9716
discretization: remove obsolete {TOFIX} item
biancagi May 14, 2025
a0bef54
discretization: rename {order} to {degree} in class {FunctionSpace}
biancagi May 14, 2025
1d84061
discretization: narrative edits
biancagi May 14, 2025
daf34ca
discretization: remove unused attribute in class {IsoparametricTriang…
biancagi May 15, 2025
a71ff52
discretization: move isoparametric simplex class headers to the isopa…
biancagi May 15, 2025
620d35e
discretization: implement quadratic shape functions on the triangle
biancagi May 15, 2025
066e1fc
discretization: add test of linear and quadratic shape functions on t…
biancagi May 18, 2025
3d430ba
discretization: remove forward declaration of {IsoparametricTriangle1}
biancagi May 18, 2025
1848ee1
discretization: add unit tests for isoparametric P1 and P2 elements
biancagi May 20, 2025
4af2b8f
discretization: bugfix in isoparametric P1 elements (wrong ordering o…
biancagi May 20, 2025
5697c51
Revert "discretization: bugfix in isoparametric P1 elements (wrong or…
biancagi May 23, 2025
bd1b0a5
discretization: reorder shape functions consistently across P1 and P2
biancagi May 24, 2025
539206f
discretization: narrative improvements to test {isoparametric_triangl…
biancagi May 24, 2025
b77cb18
discretization: add gradients consistency check to test {isoparametri…
biancagi May 24, 2025
1f324ad
quadrature: narrative improvements
biancagi May 24, 2025
cb6c8d1
discretization: add check of elementary stiffness and mass matrices t…
biancagi Jun 2, 2025
cc2a9e9
discretization: fix typos
biancagi Jun 2, 2025
92c2a20
quadrature: add quadrature formula on triangles with degree of exactn…
biancagi Jun 3, 2025
6a8d0ca
quadrature: fix error in calculation of integrals on the reference te…
biancagi Jun 3, 2025
afcfaa7
discretization: change data structure for evaluated shape functions a…
biancagi Jun 3, 2025
c87cba8
discretization: add test for elementary mass and stiffness matrices f…
biancagi Jun 3, 2025
c8f2906
Revert "discretization: change data structure for evaluated shape fun…
biancagi Jun 7, 2025
25c6913
discretization: add equation map to test for elementary mass and stif…
biancagi Jun 7, 2025
b47a31d
discretization: fix typo in comment
biancagi Jun 7, 2025
4ebef53
discretization: implement discretization with second order Galerkin f…
biancagi Jun 7, 2025
f9f65af
discretization: narrative edits
biancagi Jun 8, 2025
82358e0
discretization: in class {IsoparametricTriangle}, rename {dim} to {pa…
biancagi Jun 8, 2025
bcb6193
discretization: class {IsoparametricTriangle}, is not template wrt th…
biancagi Jun 8, 2025
7e5a65b
.cmake: suppress compiler warning "parameter passing ... when C++17 i…
biancagi Jun 8, 2025
2c5d273
discretization: move {node_type} alias to parent class {Isoparametric…
biancagi Jun 21, 2025
e2d8cfd
discretization: rename nodes to discretization nodes
biancagi Jun 21, 2025
f55cae7
geometry: {constexpr} class {CoordinateSystem}
biancagi Jun 23, 2025
29fc55d
geometry: {constexpr} point and vertex accessors in class {GeometricS…
biancagi Jun 23, 2025
d5fc46b
utilities: {constexpr} classes {SharedPointer} and {StdSharedPointer}
biancagi Jun 23, 2025
17909cd
discretization: refactoring
biancagi Jun 23, 2025
465f09e
discretization: rename classes {IsoparametricTriangle1,2} to {Isopara…
biancagi Jun 23, 2025
7bf4076
discretization: remove redundant {mito} namespace specifications in i…
biancagi Jun 23, 2025
8910b42
discretization: narrative improvements
biancagi Jun 23, 2025
64b4330
discretization: redesign access to shape functions in isoparametric t…
biancagi Jul 5, 2025
cb6da47
discretization: improve conciseness
biancagi Jul 5, 2025
4da8571
discretization: refactoring
biancagi Jul 5, 2025
13d9d3c
discretization: refactoring
biancagi Jul 5, 2025
ed5e0ec
discretization: rename {discretization_nodes} to {connectivity}
biancagi Jul 5, 2025
0f4f4d5
discretization: make {reference_element_type} definition public in {S…
biancagi Jul 5, 2025
21b4721
tests/discretization: simplify tests on shape functions
biancagi Jul 5, 2025
4379080
discretization: collected fem classes in {fem} subdirectory
biancagi Jul 5, 2025
6a28518
discretization: improve structure of {fem} directory
biancagi Jul 5, 2025
fc0d959
tests/discretization: add calculation of the H1 norm to the poisson test
biancagi Jul 5, 2025
2eb921d
discretization: rename {get_nodes} to {get_discretization_nodes}
biancagi Jul 7, 2025
31b1a1f
discretization: remove unused type alias in class {FunctionSpace}
biancagi Jul 7, 2025
34bc531
constraints: add class {Constraint}, parent class for {Dirichlet}
biancagi Jul 7, 2025
35bbe99
discretization: fix typos in comments
biancagi Jul 14, 2025
8915f1c
discretization: add {degree} static attribute in classes {Isoparametr…
biancagi Jul 21, 2025
f4c8e66
discretization: add {dim} static attribute in class {IsoparametricTri…
biancagi Jul 21, 2025
4f3b919
discretization: class {FunctionSpace} is now template with respect to…
biancagi Jul 21, 2025
acea217
discretization: factor out grad-grad and rhs elementary blocks calcul…
biancagi Jul 21, 2025
a5432fa
discretization: {constexpr} loop on quadrature points for block assembly
biancagi Jul 21, 2025
5dee059
discretization: narrative edit
biancagi Jul 21, 2025
f93548b
discretization: draft implementation of assembly blocks
biancagi Jul 22, 2025
958de4e
discretization: add method {parametrization} to classes {Isoparametri…
biancagi Jul 22, 2025
473abc8
discretization: remove dependency on manifold from blocks implementation
biancagi Jul 22, 2025
b529769
discretization: source term of poisson's problem is now a {field} (no…
biancagi Jul 23, 2025
a9fd207
discretization: refactoring of assembly blocks
biancagi Jul 23, 2025
7619854
discretization: narrative edits
biancagi Jul 23, 2025
1006caa
discretization: introduce type alias for isoparametric simplex and si…
biancagi Jul 23, 2025
f29a59b
discretization: {constexpr} quadrature points {for} loops in test driver
biancagi Jul 23, 2025
ff8820b
solvers: major redesign of the {petsc} wrappers
biancagi Jul 24, 2025
600e395
discretization: use element parametrization to determine physical coo…
biancagi Jul 24, 2025
c69a740
solvers: add attribute with number of equations to class {PETScLinear…
biancagi Jul 24, 2025
0daed98
discretization: class {AssemblyBlock} is not template any more wrt th…
biancagi Jul 24, 2025
a2c4916
discretization: add {assembly_block_t} alias to api
biancagi Jul 26, 2025
f5710e6
discretization: add block to compute the L2 norm of a field
biancagi Jul 26, 2025
8798d00
discretization: add an item {TOFIX}
biancagi Jul 26, 2025
da304dd
discretization: implement factory function to build a nodal field out…
biancagi Jul 28, 2025
d8ab53c
discretization: readability improvement
biancagi Jul 28, 2025
f0befcc
discretization: default empty default constructor of class {AssemblyB…
biancagi Jul 28, 2025
152989a
discretization: accessors of classes {IsoparametricTriangleP} now ret…
biancagi Jul 28, 2025
477d90f
discretization: readability improvement in test {poisson}
biancagi Jul 28, 2025
ec2e3f6
discretization: consistency fix in {poisson} test driver
biancagi Jul 28, 2025
2649239
discretization: use element jacobian instead of cell volume in error …
biancagi Jul 28, 2025
25823cd
discretization: minor readability improvement in class {SourceTermBlock}
biancagi Jul 28, 2025
9ee7412
discretization/blocks: {L2NormBlock} now uses a function of the baryc…
biancagi Jul 28, 2025
d72de99
solvers: rename {solvers} directory to {matrix_solvers}
biancagi Jul 28, 2025
cd1859c
discretization: move {DiscretizationNode} alias and factory out of {f…
biancagi Jul 29, 2025
747c0eb
discretization: rename nodal fields to mesh fields
biancagi Jul 29, 2025
aac430d
discretization: move class {FunctionSpace} out of {fem} subdirectory
biancagi Jul 29, 2025
a2b3431
discretization: add concept of a {FunctionSpace}
biancagi Jul 29, 2025
d3d4bc6
discretization: draft implementation {nodal_field_t} as a {DiscreteFi…
biancagi Jul 29, 2025
206d770
vtk: implement writers for nodal fields
biancagi Jul 29, 2025
0209430
vtk: remove assumption that the number of points in the grid match th…
biancagi Jul 30, 2025
46ed6d4
discretization: nodal fields are now defined on all discretization no…
biancagi Jul 30, 2025
d02e478
discretization: major redesign of the components discrete system / li…
biancagi Jul 30, 2025
844b3a6
vtk: have {FieldVTKWriter} give a runtime error if method {_attach_fi…
biancagi Jul 30, 2025
428a249
solvers: consistency fix
biancagi Jul 30, 2025
7bf6421
solvers: consistency fix
biancagi Jul 30, 2025
9fc55ef
discretization: clean up old {TODO}
biancagi Jul 30, 2025
55baedd
discretization: formatting edits
biancagi Jul 30, 2025
3f49909
discretization/blocks: bugfix
biancagi Jul 30, 2025
e988805
consistency edits
biancagi Jul 30, 2025
e43b77f
discretization: remove redundant namespace specifications
biancagi Jul 30, 2025
928cea1
utilities: proof of concept implementation of {NamedClass}
biancagi Jul 31, 2025
162ffc3
.devcontainer: add Dockerfile and configuration for development envir…
biancagi Aug 1, 2025
bb606ed
discretization: fix pedantic compiler error
biancagi Aug 1, 2025
f9e8e5d
discretization: {constexpr} shape functions calculation whenever poss…
biancagi Aug 2, 2025
740be19
discretization/fem: fix major inefficiency in calculation of the jaco…
biancagi Aug 2, 2025
8ff30b7
devcontainer: enable bash completions
biancagi Aug 17, 2025
d0fc094
devcontainer: add {gitlens} extension
biancagi Aug 17, 2025
1ab9bf5
devcontainer: configure pull fastforward {git} behavior
biancagi Aug 17, 2025
a83382b
devcontainer: remove unused and unnecessary {gitconfig}
biancagi Aug 17, 2025
5917c60
discretization: add check that the number of equations in the discret…
biancagi Aug 17, 2025
9a1c074
devcontainer: add {gitgraph} extension
biancagi Aug 17, 2025
cd69b0a
fields: generalize concept {compatible_fields_c} to an arbitrary numb…
biancagi Aug 21, 2025
94f9ec2
functions: add helper functions {product_result_t} and {sum_result_t}…
biancagi Aug 21, 2025
9fb8083
functions: a {function_c} should not satisfy the concept of a {functo…
biancagi Aug 21, 2025
7e77c8b
functions: add concept of functions with same input
biancagi Aug 21, 2025
a8500c3
functions and fields: implement linear combinations of functions and …
biancagi Aug 21, 2025
9a974b5
functions: bugfix chain rule for vector valued functions
biancagi Aug 23, 2025
d02edd0
functions: bugfix in {operator*}
biancagi Aug 25, 2025
0c4ec2a
functions: implement {inverse} for square matrix functions
biancagi Aug 25, 2025
6f9d01b
functions: implement composition operator for class {LinearCombination}
biancagi Aug 25, 2025
70dd74e
functions: add test on derivative of scalar product
biancagi Aug 25, 2025
1d7ef25
discretization: add test on construction of shape functions and deriv…
biancagi Aug 25, 2025
6d85434
functions: uniformly rename type of function alias
biancagi Aug 25, 2025
ad0304e
functions: add concept of a tensor function
biancagi Aug 26, 2025
d8d6f4b
functions: add subscript function operator and its derivative
biancagi Aug 26, 2025
daf2cf0
functions: clarify concepts of scalar (vector) functions and scalar- …
biancagi Aug 26, 2025
dfb0f80
functions: redesign partial derivatives of tensor functions
biancagi Aug 26, 2025
35b36f4
tests/discretization: mark end of file
biancagi Aug 26, 2025
73328eb
tests/discretization: rewrite test of construction of shape functions…
biancagi Aug 26, 2025
ace004c
tests/functions: add test with derivatives of tensor functions
biancagi Aug 30, 2025
8b9847a
tests/functions: simplify test thanks to redesign of rev. dfb0f80
biancagi Aug 30, 2025
9d3e1e5
tests/functions: add check that evaluating commutes with subscripting
biancagi Aug 30, 2025
0a15481
functions: fix typos in comments
biancagi Aug 30, 2025
1fb55c0
functions: class {Subscript} is now template wrt the index type
biancagi Aug 31, 2025
7f44fab
functions: add derivative of a (constant) tensor
biancagi Aug 31, 2025
602d3b6
functions: add multi-index version of operator[] for tensor valued fu…
biancagi Aug 31, 2025
eb84656
functions: fix typo in comment
biancagi Aug 31, 2025
91e3ae1
functions: generalize {derivative} of composition to composite tensor…
biancagi Aug 31, 2025
01eedd2
functions: fix redundant test, mistakenly introduced in rev. 70dd74e
biancagi Aug 31, 2025
6505c55
manifolds/geometry/quadrature: remove cell-level {parametrization} me…
biancagi Sep 4, 2025
bf426c5
discretization: move non-fem related discretization classes to new di…
biancagi Sep 6, 2025
97e11f4
solvers: add forgotten header {solvers.h}
biancagi Sep 6, 2025
1e09bed
solvers: remove unnecessary {include} statement
biancagi Sep 6, 2025
0b7b410
fem: rename {discretization} directory to {fem}
biancagi Sep 6, 2025
320be08
fem: rename {discretization} namespace to {fem}
biancagi Sep 6, 2025
5dcdf3b
fem: rename {fem} subdirectory to {elements}
biancagi Sep 6, 2025
0a8fd27
geometry: add class {ReferenceSimplex}
biancagi Sep 6, 2025
8741cb8
quadrature: quadrature rules are now defined on the {ReferenceSimplex…
biancagi Sep 6, 2025
5c8c95d
tests: rename {discretization} test directory to {fem}
biancagi Sep 6, 2025
55b6717
functions: generalize class {Sum} to the sum of an arbitrary number o…
biancagi Sep 7, 2025
81304f1
functions: add class {DyadicProduct}
biancagi Sep 7, 2025
7967076
fem: shape functions are now defined on the same reference simplex as…
biancagi Sep 8, 2025
11c9cff
.cmake: switch to {c++23}
biancagi Sep 8, 2025
4be59c4
tests/fem: improve readability of shape functions construction test
biancagi Sep 8, 2025
f48e037
functions: classes {LinearCombination} and {Summation} now take the i…
biancagi Sep 8, 2025
b57dd1c
fem/elements: remove unused type alias
biancagi Sep 8, 2025
dee7c3e
topology: remove unused type alias {barycentric_coordinates_type} in …
biancagi Sep 9, 2025
f04677b
quadrature: narrative edits
biancagi Sep 9, 2025
a9e3bfc
geometry, quadrature and fem: replace barycentric coordinates with pa…
biancagi Sep 9, 2025
6d64973
fem: shape functions are now fields defined on parametric coordinates
biancagi Sep 10, 2025
d38b7f5
fem/elements: fix inefficiency in shape functions gradients evaluation
biancagi Sep 13, 2025
c684b94
coordinates: fix typo
biancagi Sep 28, 2025
3582fb5
mesh: fix typo
biancagi Sep 28, 2025
5aaf0e7
fem: in isoparametric classes, rename {geometric_simplex_type} to {ce…
biancagi Sep 28, 2025
fcba59d
fem: function space is now template with respect to the finite elemen…
biancagi Sep 28, 2025
debcf95
fem: pass label as first input argument in constructor of {DiscreteSy…
biancagi Oct 5, 2025
b41eeb4
fem: narrative edits
biancagi Oct 5, 2025
136933f
fem/poisson.cc: remove addressed questions/todos
biancagi Oct 5, 2025
ddde1fb
fem: implement class {Weakform}
biancagi Oct 5, 2025
9460f3b
matrix_solvers/petsc: remove call to linear system {create} in the so…
biancagi Oct 6, 2025
e6ff277
matrix_solvers/petsc: narrative edits
biancagi Oct 6, 2025
ed84905
geometry: expose the order of reference simplices
biancagi Oct 12, 2025
22b8ba0
topology: remove unused utility function
biancagi Oct 12, 2025
b88440c
fem: fix typos barycentric -> parametric
biancagi Oct 12, 2025
2c6b556
fem/elements: consistency edit
biancagi Oct 12, 2025
92a5fdd
fem/blocks: bugfix in blocks (grad-grad, source, L2)
biancagi Oct 13, 2025
43dd2ca
fem/blocks: add mass matrix block
biancagi Oct 13, 2025
1cd55eb
fem/blocks: add unit tests for grad-grad and mass blocks
biancagi Oct 13, 2025
456f28f
fem/blocks: tighten tolerances on error checks
biancagi Oct 13, 2025
cd60182
fem/blocks: minor readability improvements to blocks
biancagi Oct 13, 2025
786a208
fem: reaname {n_nodes} to {n_element_nodes} in class {DiscreteSystem}
biancagi Oct 25, 2025
81b45fa
fem: factor discretization implementation outside of class {FunctionS…
biancagi Oct 26, 2025
2f8ac19
fem: change length of segment for {elements_type} container to the nu…
biancagi Oct 26, 2025
5e75772
fem: redesign discretization logic
biancagi Oct 26, 2025
afa02d6
fem: reorganize elements library
biancagi Oct 26, 2025
8215da4
fem: tests now use api typedef {isoparametric_simplex_t}
biancagi Oct 26, 2025
f82ca5c
.github/workflows: skip upgrade step for {ubuntu}
biancagi Nov 1, 2025
a3a8460
.github/workflows: install default {vtk} version
biancagi Nov 1, 2025
314fe67
.github/workflows: checkout {pyre} {tensor} branch instead of {main}
biancagi Nov 5, 2025
f803b73
.cmake: conditionally add {poisson} test only if {petsc} is supported
biancagi Nov 5, 2025
03518b3
benchmarks: promote {poisson} driver to benchmarks
biancagi Nov 5, 2025
f066d3b
.github/workflows: update to {gcc14}
biancagi Nov 6, 2025
991be87
Merge branch 'main' into poisson
biancagi Nov 6, 2025
2327127
.github/workflows: build {google-benchmark} with {gcc-14}
biancagi Nov 7, 2025
910cd39
.github/workflows: use {vtk@9.5.1}
biancagi Nov 7, 2025
126ddcf
.github/workflows: use {vtk@9.1.0}
biancagi Nov 7, 2025
990decc
.github/workflows: use {vtk@9.1.0}
biancagi Nov 7, 2025
5ae7a15
.github/workflows: show available {vtk} formulae
biancagi Nov 7, 2025
b88fe13
.github/workflows: use {vtk@9.5.1} both for {brew} and {pip}
biancagi Nov 8, 2025
6b64231
.github/workflows: fix typo
biancagi Nov 8, 2025
f71a453
.github/workflows: use {vtk@9.0.2} both for {brew} and {pip}
biancagi Nov 9, 2025
3495371
.github/workflows: use {vtk@9.2.6} both for {brew} and {pip}
biancagi Nov 9, 2025
c387b18
.github/workflows: use {vtk@9.3.1} both for {brew} and {pip}
biancagi Nov 9, 2025
321ec72
.github/workflows: use {vtk@9.4.0} both for {brew} and {pip}
biancagi Nov 9, 2025
7072f60
.github/workflows: let's see if {macos-14} makes things better
biancagi Nov 9, 2025
7981441
.github/workflows: build {vtk} from source with {gcc-14}
biancagi Nov 9, 2025
e6a1b3a
poisson: improvements to narrative
biancagi Nov 10, 2025
3c0e67c
.github/workflows: disable {vtk} in {macos} actions
biancagi Nov 10, 2025
0ba0aae
.github/workflows: forgot to disable {pip} show of {vtk} in {macos} a…
biancagi Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .cmake/mito-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
include(${CMAKE_CURRENT_LIST_DIR}/mito-targets.cmake)
check_required_components(mito)

# request c++20
set(CMAKE_CXX_STANDARD 20)
# request c++23
set(CMAKE_CXX_STANDARD 23)

# adjust the include path
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
Expand Down
4 changes: 4 additions & 0 deletions .cmake/mito_benchmarks_mito_lib.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,9 @@ mito_benchmark_driver(benchmarks/mito.lib/integration/integration.cc)
# fields
mito_benchmark_driver(benchmarks/mito.lib/fields/laplacian.cc)

if(WITH_PETSC)
# poisson boundary value problem
mito_benchmark_driver(benchmarks/mito.lib/pdes/poisson.cc)
endif()

# end of file
6 changes: 3 additions & 3 deletions .cmake/mito_init.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ function(mito_cxxInit)
# set C++ standard
include(CheckCXXCompilerFlag)

# request c++20
set(CMAKE_CXX_STANDARD 20 PARENT_SCOPE)
# request c++23
set(CMAKE_CXX_STANDARD 23 PARENT_SCOPE)
set(CMAKE_CXX_STANDARD_REQUIRED True PARENT_SCOPE)

# additional compilation flags
set(CMAKE_CXX_FLAGS "-fdiagnostics-color=always -Wall -Wextra -pedantic -Werror" PARENT_SCOPE)
set(CMAKE_CXX_FLAGS "-fdiagnostics-color=always -Wall -Wextra -pedantic -Werror -Wno-psabi" PARENT_SCOPE)

# all done
endfunction(mito_cxxInit)
Expand Down
3 changes: 2 additions & 1 deletion .cmake/mito_sources.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ set(MITO_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/lib/mito/version.cc)
# the mito petsc backend
if (WITH_PETSC)
set(MITO_SOURCES ${MITO_SOURCES}
lib/mito/solvers/backend/petsc/PETScKrylovSolver.cc
lib/mito/matrix_solvers/backend/petsc/PETScLinearSystem.cc
lib/mito/matrix_solvers/backend/petsc/PETScKrylovSolver.cc
)
endif()

Expand Down
28 changes: 22 additions & 6 deletions .cmake/mito_tests_mito_lib.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ mito_test_driver(tests/mito.lib/functions/derivative_constants.cc)
mito_test_driver(tests/mito.lib/functions/derivative_chain_rule.cc)
mito_test_driver(tests/mito.lib/functions/derivative_higher_order.cc)
mito_test_driver(tests/mito.lib/functions/derivative_sum.cc)
mito_test_driver(tests/mito.lib/functions/derivative_subscript.cc)
mito_test_driver(tests/mito.lib/functions/derivative_product.cc)
mito_test_driver(tests/mito.lib/functions/derivative_inverse.cc)
mito_test_driver(tests/mito.lib/functions/partial_derivatives.cc)
mito_test_driver(tests/mito.lib/functions/tensor_derivatives.cc)

#  geometry
mito_test_driver(tests/mito.lib/geometry/coordinates.cc)
Expand All @@ -35,9 +37,20 @@ mito_test_driver(tests/mito.lib/geometry/euclidean_metric_space.cc)
mito_test_driver(tests/mito.lib/geometry/polar_metric_space.cc)
mito_test_driver(tests/mito.lib/geometry/spherical_metric_space.cc)

# discretization
mito_test_driver(tests/mito.lib/discretization/quadrature_field.cc)
mito_test_driver(tests/mito.lib/discretization/nodal_field.cc)
# constraints
mito_test_driver(tests/mito.lib/constraints/dirichlet.cc)

# discrete
mito_test_driver(tests/mito.lib/discrete/quadrature_field.cc)
mito_test_driver(tests/mito.lib/discrete/mesh_field.cc)

# fem
mito_test_driver(tests/mito.lib/fem/block_grad_grad.cc)
mito_test_driver(tests/mito.lib/fem/block_mass.cc)
mito_test_driver(tests/mito.lib/fem/shape_functions_triangle_construction.cc)
mito_test_driver(tests/mito.lib/fem/shape_functions_triangle_p1.cc)
mito_test_driver(tests/mito.lib/fem/shape_functions_triangle_p2.cc)
mito_test_driver(tests/mito.lib/fem/isoparametric_triangle.cc)

# io
mito_test_driver(tests/mito.lib/io/summit_mesh_reader_2D.cc)
Expand All @@ -64,9 +77,8 @@ endif()

# solvers
if(WITH_PETSC)
mito_test_driver(tests/mito.lib/solvers/petsc_external_initialize.cc)
mito_test_driver(tests/mito.lib/solvers/petsc_internal_initialize.cc)
mito_test_driver(tests/mito.lib/solvers/petsc_solve_linear_system.cc)
mito_test_driver(tests/mito.lib/matrix_solvers/petsc_initialize_finalize.cc)
mito_test_driver(tests/mito.lib/matrix_solvers/petsc_ksp.cc)
endif()

# tensor
Expand All @@ -78,7 +90,10 @@ mito_test_driver(tests/mito.lib/tensor/tensor_product_forms.cc)
# fields
mito_test_driver(tests/mito.lib/fields/fields.cc)
mito_test_driver(tests/mito.lib/fields/fields_traits.cc)
mito_test_driver(tests/mito.lib/fields/calculus_identities.cc)
mito_test_driver(tests/mito.lib/fields/calculus_scalar_field.cc)
mito_test_driver(tests/mito.lib/fields/calculus_vector_field.cc)
mito_test_driver(tests/mito.lib/fields/gradient_non_square.cc)
mito_test_driver(tests/mito.lib/fields/polar_metric_field.cc)
mito_test_driver(tests/mito.lib/fields/spherical_metric_field.cc)

Expand Down Expand Up @@ -152,6 +167,7 @@ mito_test_driver(tests/mito.lib/utilities/segmented_vector_iterator.cc)
mito_test_driver(tests/mito.lib/utilities/segmented_vector_subscript.cc)
mito_test_driver(tests/mito.lib/utilities/segmented_vector_print.cc)
mito_test_driver(tests/mito.lib/utilities/shared_pointer.cc)
mito_test_driver(tests/mito.lib/utilities/named_class.cc)

# quadrature
mito_test_driver(tests/mito.lib/quadrature/quadrature_parametric_segment.cc)
Expand Down
84 changes: 84 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# global args
ARG user=user
ARG homedir=/home/${user}
ARG nprocs=4

FROM ubuntu:latest

# to avoid user interaction with tzdata asking for timezone
ARG DEBIAN_FRONTEND=noninteractive

#
ARG user
ARG homedir
ARG nprocs

# environment
# colorize the terminal
ENV TERM=xterm-256color
# openmpi
ENV OMPI_ALLOW_RUN_AS_ROOT=1
ENV OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
ENV OMPI_MCA_rmaps_base_oversubscribe=1

# get the latest
RUN apt dist-upgrade -y

# update the package repository
RUN apt update -y

# install multipurpose packages
RUN apt install -y cmake-curses-gui
RUN apt install -y git
RUN apt install -y git-core
RUN apt install -y bash-completion
RUN apt install -y make
RUN apt install -y vim
RUN apt install -y sudo

# install mito dependencies
RUN apt install -y libgtest-dev
RUN apt install -y libbenchmark-dev
RUN apt install -y libopenmpi-dev
RUN apt install -y libmetis-dev
RUN apt install -y libvtk9-dev
RUN apt install -y petsc-dev
RUN apt install -y valgrind
RUN apt install -y libpython3-dev
RUN apt install -y python3-pytest

# install pyre dependencies
RUN apt install -y pybind11-dev

# install pyre
WORKDIR ${homedir}
RUN git clone https://github.com/pyre/pyre \
&& cd pyre \
&& git checkout tensor \
&& mkdir build \
&& cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/pyre .. \
&& make -j ${nprocs} \
&& make install \
&& cd .. \
&& rm -rf build

# setup {user} user
ENV USER=${user}
ENV HOME=${homedir}
RUN useradd -s /bin/bash --create-home --home-dir $HOME $USER \
&& usermod -aG sudo $USER \
&& chown -R $USER:$USER $HOME
RUN echo "$USER:password" | chpasswd
# copy the bashrc
COPY --chown=${user}:${user} bashrc .bashrc

# default user and work directory when running the container
USER ${user}
WORKDIR ${homedir}
# remove annoying message on how to run a sudo command
RUN touch ~/.sudo_as_admin_successful
# configure git
RUN git config --global pull.ff only

# end of file
6 changes: 6 additions & 0 deletions .devcontainer/bashrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# enable bash completion
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
elif [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi
16 changes: 16 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// .devcontainer/devcontainer.json
{
"name": "mito",
"build": {
"dockerfile": "Dockerfile"
},
"mounts": [
"source=${localWorkspaceFolder},target=/home/user/mito,type=bind"
],
"extensions": [
"ms-vscode.cpptools-extension-pack",
"eamodio.gitlens",
"med-h.git-graph-revamped",
],
"remoteUser": "user"
}
16 changes: 6 additions & 10 deletions .github/workflows/cmake-macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-13]
os: [macos-14]
target: [Debug, Release]
python: ["3.12"]
suite: [gcc]
suiteVersion: ["13"]
suiteVersion: ["14"]
include:
- suite: gcc
cc: gcc
Expand All @@ -39,9 +39,7 @@ jobs:
echo " -- install our dependencies"
brew install make cmake metis open-mpi
# install {google-benchmark} from source to make sure it is built with the same compiler
brew install --build-from-source --cc=gcc-12 google-benchmark
curl https://raw.githubusercontent.com/Homebrew/homebrew-core/67b277e6d1faee20d2aa4fc8b2dc229a241fa807/Formula/vtk.rb > vtk.rb
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install vtk.rb
brew install --build-from-source --cc=gcc-14 google-benchmark

- name: python ${{matrix.python}} setup
uses: actions/setup-python@v4
Expand All @@ -51,7 +49,7 @@ jobs:
- name: install dependencies
run: |
python3 -m pip install --upgrade pip
pip3 install distro 'numpy<2.0' pybind11 pytest vtk
pip3 install distro 'numpy<2.0' pybind11 pytest

- name: checkout gtest
uses: actions/checkout@v3
Expand Down Expand Up @@ -84,7 +82,7 @@ jobs:
repository: pyre/pyre
fetch-depth: 0
path: ${{github.workspace}}/pyre
ref: main
ref: tensor

- name: retrieve pyre commit SHA
id: pyre-sha
Expand Down Expand Up @@ -155,8 +153,6 @@ jobs:
find ${pythonLocation}/lib/python${pythonVersion}/site-packages/pybind11
echo " -- pytest"
pip3 show pytest
echo " -- vtk"
pip3 show vtk
env:
pythonVersion: ${{matrix.python}}

Expand All @@ -172,7 +168,7 @@ jobs:
mkdir build
cd build
echo " -- configuring the build"
cmake -DCMAKE_INSTALL_PREFIX=${prefix} -DCMAKE_BUILD_TYPE=${target} -DCMAKE_CXX_COMPILER=${cxx} -DPython_EXECUTABLE=${pythonLocation}/bin/python${pythonVersion} -Dpybind11_DIR=${pythonLocation}/lib/python${pythonVersion}/site-packages/pybind11/share/cmake/pybind11 -DMITO_BUILD_TESTING=ON -DMITO_BUILD_BENCHMARKS=ON -Dpyre_DIR=${{runner.temp}}/pyre_install/share/cmake/pyre -DGTest_DIR=${{runner.temp}}/gtest_install/lib/cmake/GTest -DWITH_VTK=ON -DWITH_METIS=ON ${{github.workspace}}/mito
cmake -DCMAKE_INSTALL_PREFIX=${prefix} -DCMAKE_BUILD_TYPE=${target} -DCMAKE_CXX_COMPILER=${cxx} -DPython_EXECUTABLE=${pythonLocation}/bin/python${pythonVersion} -Dpybind11_DIR=${pythonLocation}/lib/python${pythonVersion}/site-packages/pybind11/share/cmake/pybind11 -DMITO_BUILD_TESTING=ON -DMITO_BUILD_BENCHMARKS=ON -Dpyre_DIR=${{runner.temp}}/pyre_install/share/cmake/pyre -DGTest_DIR=${{runner.temp}}/gtest_install/lib/cmake/GTest -DWITH_VTK=OFF -DWITH_METIS=ON ${{github.workspace}}/mito
echo " -- building mito"
make -j 2 install
env:
Expand Down
8 changes: 2 additions & 6 deletions .github/workflows/cmake-ubuntu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
target: [Debug, Release]
python: ["3.12"]
suite: [gcc]
suiteVersion: ["13"]
suiteVersion: ["14"]
include:
- suite: gcc
cc: gcc
Expand All @@ -38,10 +38,6 @@ jobs:
run: |
echo " -- update the package cache"
sudo apt update
echo " -- upgradables"
sudo apt list --upgradable
echo " -- upgrade"
sudo apt dist-upgrade
echo " -- install our dependencies"
sudo apt install -y make cmake libgtest-dev libbenchmark-dev libvtk9-dev libopenmpi-dev libmetis-dev valgrind petsc-dev

Expand All @@ -61,7 +57,7 @@ jobs:
repository: pyre/pyre
fetch-depth: 0
path: ${{github.workspace}}/pyre
ref: main
ref: tensor

- name: retrieve pyre commit SHA
id: pyre-sha
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/mito.lib/integration/integration.cc
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ main()
auto integrator = mito::quadrature::integrator<mito::quadrature::GAUSS, 2>(manifold);

auto result = integrator.integrate(f);
auto exact = mito::tensor::scalar_t(0.9460830607878437);
auto exact = mito::tensor::scalar_t{ 0.9460830607878437 };
channel << "Integration of cos(x*y): Result = " << result
<< ", Error = " << std::fabs(result - exact) << journal::endl;

Expand Down
Loading
Loading