Featurecode_asterDeal IIGetFEM++ElmerfemFEniCSFiredrakelibMeshCOMSOL(R)
website:www.code-aster.orgwww.dealii.orghttp://home.gna.org/getfem/https://www.csc.fi/elmerhttp://fenicsproject.org/http://firedrakeproject.org/http://libmesh.github.io/https://www.comsol.com
license:GPLLGPLLGPLGNU (L)GPLGNU GPL\LGPLGNU LGPLGPL
GUI:Yes (Salome-Meca)NoNoYes, partial functionalityPostprocessing onlyNoNoYes
Community:discussion forum, Bitbucket forgeGoogle GroupMailing list1000’s of users, discussion forum, mailing listMailing listMailing list and IRC channelmail lists
Documentation:user manual, theory manual, verification manual, developer manual (more than 25000 pages both in French and English with machine translation)50+ tutorials, 50+ video lectures, DoxygenUser doc, tutorials, demos, developer’s guideElmerSolver 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:segments (1d), triangles, quadrilaterals (2d), tetrahedra, pyramids, wedges, hexahedra (3d)intervals (1d), quads (2d), and hexes (3d) onlyintervals, triangles, tetrahedra, quads, hexes, prisms, some 4D elements, easily extensible.intervals (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:Quadraticany orderYes, for Lagrange elements(Any - work in progress)(Any - using appropriate branches)Any? Second-order is the default for most cases.
mesh generation:Yes (Salome-Meca)external+predefined shapesExperimental in any dimension + predefined shapes + Extrusion.Limited 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:h-refinementh, p, and hp for CG and DGOnly hh-refinement for selected equationsOnly hh, p, mached hp, singular hpgenerate new mesh with variable density, no(?) p-refinement.
mesh input\output:unv, gmsh, MED, astergmsh, GiD, AnsysXDMF (and FEniCS XML)
mesh check:limited features (double nodes, degenerated elements)?intersections (collision testing)
CAD files support:Yes (Salome-Meca)IGES, STEP (with OpenCascade wrapper)NoLimited support via OpenCASCADE in ElmerGUISTEP, IGES and many others.
mesh operation:Yes (Salome-Meca)Extrude, rotate, translation, refinedistort/translate/rotate/scale
Parallel possibilities
automatic mesh partitioning:Yes for parallel calculations (PTScotch, ParMetis)yes, shared (METIS/Parmetis) and distributed (p4est)Yes (METIS)partitioning with ElmerGrid using Metis or geometric divisionYes (ParMETIS and SCOTCH)Yes
MPI:YesYes (up to 147k processes), test for 4k processesYesYes, demonstrated scalability up to 1000’s of coresYes, DOLFIN solver scales up to 24kYes, Scaling plot for Firedrake out to 24k cores.YesAlmost ideal for parameter sweep? For large scale simulations Comsol 4.2 bench by Pepper has 19.2 speedup on 24 core cluster (0.8 efficiency).
threads:YesThreading Build Blocksthreadsafe, limited threading, work in progressYes
OpenMP:YesYes (vectorization only)YesYes, partiallyLimited
OpenCL:NoNoNoNo
CUDA:Nowork in progressNoNo
Solver
Dimension:0D/1D/2D/3D (dimensions may coexist)1/2/3DAny, possibility to mix and couple problem of different dimension1D/2D/3D (dimensions may coexist)1/2/3D1/2/3D2D\3D
FE:Lagrange elements (isoparametric), mixed elements, structural mechanics elements (beam, plate)Lagrange elements of any order, continuous and discontinuous; Nedelec and Raviart-Thomas elements of any order; BDM and Bernstein; elements composed of other elements.Continuous and discontinuous Lagrange, Hermite, Argyris, Morley, Nedelec, Raviart-Thomas, composite elements (HCT, FVS), Hierarchical elements, Xfem, easily extensible.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 Monomialsin Wave Optics Module: frequency domain and trainsient UI - 1,2, and 3 order; time explicit UI - 1,2,3, and 4 order;
Quadrature:depending on the type of element (Gauss, Newton-Cotes, etc)Gauss-Legendre, Gauss-Lobatto, midpoint, trapezoidal, Simpson, Milne and Weddle (closed Newton-Cotes for 4 and 7 order polinomials), Gauss quadrature with logarithmic or 1/R weighting function, Telles quadrature of arbitrary order.Gauss-Legendre (1D and tensor product rules in 2D and 3D) tabulated up to 44th-order to high precision, best available rules for triangles and tetrahedra to very high order, best available monomial rules for quadrilaterals and hexahedra.
Transient problems:YesAny user implemented and/or from a set of predifined. Explicit methods: forward Euler, 3rd and 4th order Runge-Kutta. Implicit methods: backward Euler, implicit Midpoint, Crank-Nicolson, SDIRK. Embedded explicit methods: Heun-Euler, Bogacki-Shampine, Dopri, Fehlberg, Cash-Karp.(?) assume 2nd order leapfrog for wave optics?
Predifined equations:Yes (mechanics, thermics, acoustics)Laplace?Around 40 predefined solversNoYes, via modules
Automated assembly:YesYesYesYes
Visualization:Paraview (Salome-Meca)External (export to *.vtk and many others)External or with the Scilab/Matlab/Python interface. Possibility to perform complex slices.ElmerPost, VTK widget (but Paraview is recommended)Buil-in simple plotting + ExternalExternalNoBuilt-in
Output format:MED, ASCII*.dx *.ucd *.gnuplot *.povray *.eps *.gmv *.tecplot *.tecplot_binary *.vtk *.vtu *.svg *.hdf5vtk, gmsh, OpenDX.Several output formats (VTU, gmsh,…)VTK(.pvd, .vtu) and XDMF/HDF5VTK(.pvd, .vtu)
Boundary elements solver:Yes for Soil-Structure Interaction (Miss3D)YesNoExisting but without multipole acceleration (not usable for large problems)NoNo
Use multiple meshes:YesYes, autorefined from same initial mesh for each variable of a coupled problemYes including different dimensions and taking account of any transformation.Continuity of non-conforming interfaces ensured by mortar finite elementsYes, including non-matching meshesYes
Linear algebra
Used libs:BLAS/LAPACK, MUMPS (and SCALAPACK), PETScBuilt-in + Trilinos, PETSc, and SLEPcSuperLU, MUMPS, Built-in.Built-in, Hypre, Trilinos, umfpack, MUMPS, Pardiso, etc. (optional)PETSc, Trilinos/TPetra, Eigen.PETScPETSc, Trilinos, LASPack, SLEPc
Iterative matrix solvers:GMRES, CG, GCR, CR, FGMRES (via PETSc)All Krylov (CG, Minres, GMRES, BiCGStab, QMRS)All KrylovBuilt-in Krylov solvers, Krylov and multigrid solvers from external librariesLASPack serial, PETSc parallel
Preconditioners:ILU, Jacobi, Simple Precision Preconditioner (via MUMPS)Many, including algebraic multigrid (via Hypre and ML) and geometric multigridBasic ones (ILU, ILUT)Built-in preconditioners (ILU, diagonal, vanka, block) andLASPack serial, PETSc parallel
Matrix-free
matrix-free:NoYesNoExperimental implementationYes
matrix-free save memory:NoYesNo
matrix-free speed-up:NoYesNo
Used language
Native language:Fortran 90, PythonC++C++Fortran (2003 standard)C++Python (and generated C)C++
Bindings to language:PythonNoPython, Scilab or MatlabPython
Other
Predefined equations:linear quasistatics, linear thermics, non-linear quasistatics, non-linear dynamics, eigen problem for mechanics, linear dynamics on physical basis and modal basis, harmonic analysis, spectral analysisModel bricks: Laplace, linear and nonlinear elasticity, Helmholtz, plasticity, Mindlin and K.L. plates, boundary conditions including contact with friction.
Coupled nonlinear problems:thermo-hydro-mechanical problem for porous media, coupling with Code_Saturne CFD software for Fluid-Structure Interaction via SALOME platformYes
Binary:Yes for Salome-Meca (Linux)Linux, Windows (work in progress), MacLinux (Debian/Ubuntu)Windows, Linux (launchpad: Debian/Ubuntu), Mac (homebrew) (all with MPI)Linux (Debian\Ubuntu), MacNo. Automated installers for Linux and Mac
fullname:Analyse des Structures et Thermo-mécanique pour des Études et des Recherches (ASTER)Elmer finite element software
Testing:More than 3500 verification testcases covering all features and providing easy starting points for beginners3500+ testsMore than 400 consistency tests ensuring backward compatibility
Wilkinson Prize:20072015 for dolfin-adjoint
@@html:<a href=”https://www.dealii.org/deal85-preprint.pdf”>@@geometric multigrid for 147k, strong and weak scaling
Symbolic derivation of the tangent system for nonlinear problems:Yes
Support for fictitious domain methods:Yes
Optimization Solvers:Support for TAO- and nlopt-based constrained optimization solvers incorporating gradient and Hessian information.

Overview

This is an auto generated comparison from manually filled `*.profiles` for FEA software. It is also available in HTML format preview 1 (fast and correct rendering of html table from previous commit), preview 2 (a bit slow, had problems with Firefox, usually current commit) 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.