Bcube is a Julia library providing tools for the spatial discretization of partial differential equation(s) (PDE). It offers a high-level API to discretize linear or non-linear problems on unstructured mesh using continuous or discontinuous finite elements (FEM - DG).
The main features are:
- high-level api :
a(u, v) = ∫(η * ∇(u) ⋅ ∇(v))dΩ
- 1D, 2D, 3D unstructured mesh with high-order geometrical elements (gmsh format)
- Lagrange (continuous & discontinuous) and Taylor (discontinuous) finite elements (line, quad, tri, hexa, penta)
- arbitrary order for hypercube Lagrange elements
Browse the documentation for more information about the code architecture and API. Commented tutorials as well as various examples can be found in the dedicated project BcubeTutorials.jl.
Bcube can be added to your Julia environment with this simple line :
pkg> add Bcube
Numerous FEM-DG Julia packages are available, here is a non-exhaustive list;
- Gridap.jl (which has greatly influenced the development of Bcube)
- Ferrite.jl
- Trixi.jl
Any contribution(s) and/or remark(s) are welcome! Don't hesitate to open an issue to ask a question or signal a bug. PRs improving the code (new features, new elements, fixing bugs, ...) will be greatly appreciated.
Helmholtz equation | Phase field solidification | Linear transport equation |
---|---|---|
Heat equation on a sphere | Transport equation on hypersurfaces | Linear thermo-elasticity |
Ghislain Blanchard, Lokman Bennani and Maxime Bouyges