Feature | GetFEM++ | Deal II | FEniCS | Firedrake | libMesh | COMSOL(R) |
---|---|---|---|---|---|---|
website: | http://home.gna.org/getfem/ | www.dealii.org | http://fenicsproject.org/ | http://firedrakeproject.org/ | http://libmesh.github.io/ | https://www.comsol.com |
license: | LGPL | LGPL | GNU GPL\LGPL | GNU LGPL | GPL | |
GUI: | No | No | Postprocessing only | No | No | Yes |
Community: | Mailing list | Google Group | Mailing list | Mailing list and IRC channel | mail lists | |
Documentation: | User doc, tutorials, demos, developper’s guide | 50+ tutorials, 50+ video lectures, Doxygen | Tutorial, demos (how many?), 700-page book | Manual, demos, API reference | Doxygen, 40+ example codes | |
Mesh | ||||||
mesh elements: | intervals, triangles, tetrahedra, quads, hexes, prisms, some 4D elements, easily extensible. | intervals (1d), quads (2d), and hexes (3d) only | intervals, triangles, tetrahedra (quads, hexes - work in progress) | intervals, triangles, tetrahedra, quads, plus extruded meshes of hexes and wedges | Tria, Quad, Tetra, Prism, etc. | |
mesh high-order mapping: | any order | (Any - work in progress) | (Any - using appropriate branches) | |||
mesh generation: | Experimental in any dimension + predefined shapes + Extrusion. | external+predefined shapes | Yes, Constructive Solid Geometry (CSG) supported via mshr (CGAL and Tetgen used as backends) | External + predefined shapes. Internal mesh extrusion operation. | Built-in | Built-in |
mesh adaptive-refinement: | Only h | h, p, and hp for CG and DG | Only h | h, p, mached hp, singular hp | ||
mesh input\output: | gmsh, GiD, Ansys | XDMF (and FEniCS XML) | ||||
mesh check: | ? | intersections (collision testing) | ||||
CAD files support: | No | IGES, STEP (with OpenCascade wrapper) | STEP, IGES and many others. | |||
mesh operation: | Extrude, rotate, translation, refine | distort/translate/rotate/scale | ||||
Parallel possibilities | ||||||
automatic mesh partitioning: | Yes (METIS) | yes, shared (METIS/Parmetis) and distributed (p4est) | Yes (ParMETIS and SCOTCH) | Yes | ||
MPI: | Yes | Yes (up to 16k processes), test data for 4k processes | Yes, DOLFIN solver scales up to 24k | Yes, Scaling plot for Firedrake out to 24k cores. | Yes | |
threads: | Threading Build Blocks | Yes | ||||
OpenMP: | Yes | Yes (vectorization only) | Limited | |||
OpenCL: | No | No | ||||
CUDA: | No | No | ||||
Solver | ||||||
Dimension: | Any, possibility to mix and couple problem of different dimension | 1/2/3D | 1/2/3D | 1/2/3D | 2D\3D | |
FE: | Continuous and discontinuous Lagrange, Hermite, Argyris, Morley, Nedelec, Raviart-Thomas, composite elements (HCT, FVS), Hierarchical elements, Xfem, easily extensible. | Lagrange elements of any order, continuous and discontinuous; Nedelec and Raviart-Thomas elements of any order; BDM and Bernstein; elements composed of other elements. | Lagrange, BDM, RT, Nedelic, Crouzeix-Raviart, all simplex elements in the Periodic Table (femtable.org), any | Lagrange, BDM, RT, Nedelec, all simplex elements and Q- quad elements in the Periodic Table, any | Lagrange, Hierarchic, Discontinuous Monomials | |
Predifined equations: | Model bricks: Laplace, linear and nonlinear elasticity, Helmholtz, plasticity, Mindlin and K.L. plates, boundary conditions including contact with friction. | Laplace? | No | Yes, via modules | ||
Automated assembly: | Yes | Yes | Yes | |||
Visualization: | External or with the Scilab/Matlab/Python interface. Possibility to perform complex slices. | External (export to *.vtk and many others) | Buil-in simple plotting + External | External | No | Built-in |
Output format: | vtk, gmsh, OpenDX. | *.dx *.ucd *.gnuplot *.povray *.eps *.gmv *.tecplot *.tecplot_binary *.vtk *.vtu *.svg *.hdf5 | VTK(.pvd, .vtu) and XDMF/HDF5 | VTK(.pvd, .vtu) | ||
Boundary elements solver: | No | Yes | No | No | ||
Use multiple meshes: | Yes including different dimensions and taking account of any transformation. | Yes, autorefined from same initial mesh for each variable of a coupled problem | Yes, including non-matching meshes | Yes | ||
Linear algebra | ||||||
Used libs: | SuperLU, MUMPS, Built-in. | Built-in + Trilinos, PETSc, and SLEPc | PETSc, Trilinos/TPetra, Eigen. | PETSc | PETSc, Trilinos, LASPack, SLEPc | |
Iterative matrix solvers: | All Krylov | All Krylov (CG, Minres, GMRES, BiCGStab, QMRS) | LASPack serial, PETSc parallel | |||
Preconditioners: | Basic ones (ILU, ILUT) | Many, including algebraic multigrid (via Hypre and ML) and geometric multigrid | LASPack serial, PETSc parallel | |||
Matrix-free | ||||||
matrix-free: | No | Yes | Yes | |||
matrix-free save memory: | No | Yes | ||||
matrix-free speed-up: | No | Yes | ||||
Used language | ||||||
Native language: | C++ | C++ | C++ | Python (and generated C) | C++ | |
Bindings to language: | Python, Scilab or Matlab | No | Python | |||
Other | ||||||
Symbolic derivation of the tangent system for nonlinear problems: | Yes. | |||||
Coupled nonlinear problems: | Yes | |||||
Support for fictitious domain methods: | Yes | |||||
Binary: | Linux (Debian/Ubuntu) | Linux, Windows (work in progress), Mac | Linux (Debian\Ubuntu), Mac | No. Automated installers for Linux and Mac | ||
Wilkinson Prize: | 2007 | 2015 for dolfin-adjoint |
This is an auto generated comparison from manually filled `*.profiles` for FEA software. It is also available in HTML format (preview 1, preview 2) with first row and Feature column being fixed for ease of table exploration. Profiles in table are sorted with the number of filled keys.
Profile is read line-by-line. Any string before semicolon ‘:’ is treated as a key, the other part till the end of the line as value. Lines without semicolon are ignored, comments should start with hash ‘#’ in the begging of the line. main-keys.txt file contains keys in order to be listed first, all other keys from all profiles are lister afterwards. Key are always carried with semicolon, table group names are not (for visual ease they are four spaces indented). Use generate-comparison.py to generate a table from profiles, you will need to install `org-ruby` gem to convert it into HTML format (use `sudo gem install org-ruby` in Ubuntu linux to install this gem).