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.


Bcube can be added to your Julia environment with this simple line :

pkg> add https://github.com/bcube-project/Bcube.jl


Numerous FEM-DG Julia packages are available, here is a non-exhaustive list;


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 equationPhase field solidificationLinear transport equation


Ghislain Blanchard, Lokman Bennani and Maxime Bouyges