Bcube.jl
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
Commented tutorials as well as various examples can be found in the dedicated project BcubeTutorials.jl.
Installation
Bcube can be added to your Julia environment with this simple line :
pkg> add https://github.com/bcube-project/Bcube.jl
Alternatives
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
Contribution
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.
Gallery
Helmholtz equation | Phase field solidification | Linear transport equation |
---|---|---|
Authors
Ghislain Blanchard, Lokman Bennani and Maxime Bouyges