FeatureGetFEM++Deal IIElmerfemFEniCSFiredrakelibMeshCOMSOL(R)
website:http://home.gna.org/getfem/www.dealii.orghttps://www.csc.fi/elmerhttp://fenicsproject.org/http://firedrakeproject.org/http://libmesh.github.io/https://www.comsol.com
license:LGPLLGPLGNU (L)GPLGNU GPL\LGPLGNU LGPLGPL
GUI:NoNoYes, partial functionalityPostprocessing onlyNoNoYes
Community:Mailing listGoogle Group1000’s of users, discussion forum, mailing listMailing listMailing list and IRC channelmail lists
Documentation:User doc, tutorials, demos, developper’s guide50+ tutorials, 50+ video lectures, DoxygenElmerSolver Manual, Elmer Models Manual, ElmerGUI Tutorials, etc. (>700 pages of LaTeX documentation)Tutorial, demos (how many?), 700-page bookManual, demos, API referenceDoxygen, 40+ example codes
Mesh
mesh elements:intervals, triangles, tetrahedra, quads, hexes, prisms, some 4D elements, easily extensible.intervals (1d), quads (2d), and hexes (3d) onlyintervals (1d), triangles, quadrilaterals (2d), tetrahedra, pyramids, wedges, hexahedra (3d)intervals, triangles, tetrahedra (quads, hexes - work in progress)intervals, triangles, tetrahedra, quads, plus extruded meshes of hexes and wedgesTria, Quad, Tetra, Prism, etc.
mesh high-order mapping:any orderYes, for Lagrange elements(Any - work in progress)(Any - using appropriate branches)
mesh generation:Experimental in any dimension + predefined shapes + Extrusion.external+predefined shapesLimited own meshing capabilities with ElmerGrid and netgen/tetgen APIs. Internal extrusion and mesh multiplication on parallel level.Yes, Constructive Solid Geometry (CSG) supported via mshr (CGAL and Tetgen used as backends)External + predefined shapes. Internal mesh extrusion operation.Built-inBuilt-in
mesh adaptive-refinement:Only hh, p, and hp for CG and DGh-refinement for selected equationsOnly hh, p, mached hp, singular hp
mesh input\output:gmsh, GiD, AnsysXDMF (and FEniCS XML)
mesh check:?intersections (collision testing)
CAD files support:NoIGES, STEP (with OpenCascade wrapper)Limited support via OpenCASCADE in ElmerGUISTEP, IGES and many others.
mesh operation:Extrude, rotate, translation, refinedistort/translate/rotate/scale
Parallel possibilities
automatic mesh partitioning:Yes (METIS)yes, shared (METIS/Parmetis) and distributed (p4est)partitioning with ElmerGrid using Metis or geometric divisionYes (ParMETIS and SCOTCH)Yes
MPI:YesYes (up to 16k processes), test data for 4k processesYes, demonstrated scalability up to 1000’s of coresYes, DOLFIN solver scales up to 24kYes, Scaling plot for Firedrake out to 24k cores.Yes
threads:Threading Build Blocksthreadsafe, limited threading, work in progressYes
OpenMP:YesYes (vectorization only)Yes, partiallyLimited
OpenCL:NoNoNo
CUDA:NoNoNo
Solver
Dimension:Any, possibility to mix and couple problem of different dimension1/2/3D1D/2D/3D (dimensions may coexist)1/2/3D1/2/3D2D\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 elements, p-elements up to 10th order, Hcurl conforming elements (linear and quadratic) forLagrange, BDM, RT, Nedelic, Crouzeix-Raviart, all simplex elements in the Periodic Table (femtable.org), anyLagrange, BDM, RT, Nedelec, all simplex elements and Q- quad elements in the Periodic Table, anyLagrange, 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?Around 40 predefined solversNoYes, via modules
Automated assembly:YesYesYes
Visualization:External or with the Scilab/Matlab/Python interface. Possibility to perform complex slices.External (export to *.vtk and many others)ElmerPost, VTK widget (but Paraview is recommended)Buil-in simple plotting + ExternalExternalNoBuilt-in
Output format:vtk, gmsh, OpenDX.*.dx *.ucd *.gnuplot *.povray *.eps *.gmv *.tecplot *.tecplot_binary *.vtk *.vtu *.svg *.hdf5Several output formats (VTU, gmsh,…)VTK(.pvd, .vtu) and XDMF/HDF5VTK(.pvd, .vtu)
Boundary elements solver:NoYesExisting but without multipole acceleration (not usable for large problems)NoNo
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 problemContinuity of non-conforming interfaces ensured by mortar finite elementsYes, including non-matching meshesYes
Linear algebra
Used libs:SuperLU, MUMPS, Built-in.Built-in + Trilinos, PETSc, and SLEPcBuilt-in, Hypre, Trilinos, umfpack, MUMPS, Pardiso, etc. (optional)PETSc, Trilinos/TPetra, Eigen.PETScPETSc, Trilinos, LASPack, SLEPc
Iterative matrix solvers:All KrylovAll Krylov (CG, Minres, GMRES, BiCGStab, QMRS)Built-in Krylov solvers, Krylov and multigrid solvers from external librariesLASPack serial, PETSc parallel
Preconditioners:Basic ones (ILU, ILUT)Many, including algebraic multigrid (via Hypre and ML) and geometric multigridBuilt-in preconditioners (ILU, diagonal, vanka, block) andLASPack serial, PETSc parallel
Matrix-free
matrix-free:NoYesExperimental implementationYes
matrix-free save memory:NoYes
matrix-free speed-up:NoYes
Used language
Native language:C++C++Fortran (2003 standard)C++Python (and generated C)C++
Bindings to language:Python, Scilab or MatlabNoPython
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), MacWindows, Linux (launchpad: Debian/Ubuntu), Mac (homebrew) (all with MPI)Linux (Debian\Ubuntu), MacNo. Automated installers for Linux and Mac
Wilkinson Prize:20072015 for dolfin-adjoint
Testing:3500+ testsMore than 400 consistency tests ensuring backward compatibility
fullname:Elmer finite element software

Overview

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 format

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).

**Contribution

Fill free to contribute! There is still a lot of codes, not compared it the table, e.g: NgSolve, CalculiX and Salomé + Code_Aster / Code_Saturne, ANSYS, NASTRAN, CFD-ACE+, COSMOSWORKS. Comsol(R) description is poor.