Featurecode_asterPERMAS(R)COMSOL(R)MFEMGetFEM++Deal IIRama SimulatorElmerfemRangeMOOSEFEniCSlibMeshFEATool MultiphysicsFiredrake
website:https://www.code-aster.orghttps://www.intes.dehttps://www.comsol.comhttps://mfem.org/http://home.gna.org/getfem/http://www.dealii.orghttp://ramasimulator.orghttps://www.csc.fi/elmerhttp://www.range-software.comhttps://www.mooseframework.org/http://fenicsproject.org/http://libmesh.github.io/https://www.featool.com/http://firedrakeproject.org/
license:GPLProprietaryProprietaryBSDLGPLLGPLGPLGNU (L)GPLGPLLGPLGNU GPL\LGPLLGPLProprietaryGNU LGPL
GUI:Yes (Salome-Meca)YesYesNoNoNoYesYes, partial functionalityYesYesPostprocessing onlyNoMatlab and Octave GUINo
Community:discussion forum, Bitbucket forgehttps://meet.intes.de:444/projects/permas4edu https://www.researchgate.net/topic/PERMAShttps://www.comsol.com/forumGitHub RepositoryMailing listGoogle Grouphttps://github.com/Evenedric/stuff1000’s of users, discussion forum, mailing list, Discord serverGitHubGoogle GroupMailing listmail listsMailing listMailing list and IRC channel
Documentation:user manual, theory manual, verification manual, developer manual (more than 25000 pages both in French and English with machine translation)User guides, reference manuals, API documentation, application libraries with solved examples, online tutorialsUser guides, reference manuals, API documentation, application libraries with solved examples, online tutorials26 examples, 17 miniapps, Doxygen, online documentationUser doc, tutorials, demos, developer’s guide50+ tutorials, 50+ video lectures, DoxygenUser guide, reference manual, API documentation, examples, tutorialsElmerSolver Manual, Elmer Models Manual, ElmerGUI Tutorials, etc. (>700 pages of LaTeX documentation available in PDFs)user manual, tutorialsDoxygen, Markdown, 170+ example codes, 4300+ test inputsTutorial, demos (how many?), 700-page bookDoxygen, 100+ example codesOnline FEATool documentation, ~600 pages, ~20 step-by-step tutorials, and 85 m-script model examplesManual, demos, API reference
Mesh
mesh elements:segments (1d), triangles, quadrilaterals (2d), tetrahedra, pyramids, wedges, hexahedra (3d)Intervals (1D); triangles, quadrilaterals (2D and 3D boundaries); tetrahedra, pyramids, prisms, hexahedra (3d)Intervals (1D); triangles, quadrilaterals (2D and 3D boundaries); tetrahedra, pyramids, prisms, hexahedra (3d)segments, triangles, quadrilaterals, tetrahedra, hexahedra, prismsintervals, triangles, tetrahedra, quads, hexes, prisms, some 4D elements, easily extensible.intervals (1d), quads (2d), and hexes (3d) onlytrianglesintervals (1d), triangles, quadrilaterals (2d), tetrahedra, pyramids, wedges, hexahedra (3d)points(0d), segments (1d), triangles, quadrilaterals (2d), tetrahedra, hexahedra (3d)Tria, Quad, Tetra, Prism, etc.intervals, triangles, tetrahedra (quads, hexes - work in progress)Tria, Quad, Tetra, Prism, etc.intervals, triangles, tetrahedra, quads, hexesintervals, triangles, tetrahedra, quads, plus extruded meshes of hexes and wedges
mesh high-order mapping:QuadraticSecond order (Serendipity and Lagrange)Any? Second-order is the default for most cases.arbitrary-order meshes and NURBS meshesany orderNoYes, for Lagrange elements(Any - work in progress)(Any - using appropriate branches)
mesh generation:Yes (Salome-Meca)Built-in and externalBuilt-inmeshing miniapps and target-matrix mesh optimizationExperimental in any dimension + predefined shapes + Extrusion.external+predefined shapesBuilt-inLimited own meshing capabilities with ElmerGrid and netgen/tetgen APIs. Internal extrusion and mesh multiplication on parallel level.Yes (TetGen)Built-inYes, Constructive Solid Geometry (CSG) supported via mshr (CGAL and Tetgen used as backends)Built-inIntegrated DistMesh, Gmsh, and Triangle GUI and CLI interfacesExternal + predefined shapes. Internal mesh extrusion operation.
mesh adaptive-refinement:h-refinementNo; no p-refinement but several higher-order elements are included.Yes, full adaptive mesh refinement (h-refinement); no p-refinement but several higher-order elements are included. Mesh adaptation on the whole or parts of the geometry, for stationary, eigenvalue, and time-dependent simulations and by rebuilding the entire mesh or refining chosen mesh elements.conforming and non-conforming adaptive refinement for tensor product and simplex meshesOnly hh, p, and hp for CG and DGNoh-refinement for selected equationsh, p, mached hp, singular hpOnly hh, p, mached hp, singular hp
mesh input\output:unv, gmsh, MED, asterSTL, ABAQUS, NASTRAN, NX (Dr.Binde), PATRAN, UNV, BIF/BOF, H3D, native format (i.e. .hdf, .post)STL, PLY, NASTRAN, 3MF, VRML (import only), native formatVTK, Gmsh, CUBIT, NETGEN, TrueGrid, and MFEM formatgmsh, GiD, AnsysMatlabrbm, stlExodusII, Nemesis, Abaqus, Ensight, Gmsh, GMV, OFF, TecPlot TetGen, etc.XDMF (and FEniCS XML)ExodusII, Nemesis, Abaqus, Ensight, Gmsh, GMV, OFF, TecPlot TetGen, etc.FeatFlow, FEniCS XML, GiD, Gmsh, GMV, Triangle
mesh check:limited features (double nodes, degenerated elements)Avoids inverted and degenerated elements; various mesh quality measuresAvoids inverted and degenerated elements; various mesh quality measures?Avoids degenerate elementslimited features (double nodes, degenerated elements, intersected elements)intersections (collision testing)
CAD files support:Yes (Salome-Meca)STL.STEP, IGES and many others.NoIGES, STEP (with OpenCascade wrapper)DXFLimited support via OpenCASCADE in ElmerGUIYes (stl)
mesh operation:Yes (Salome-Meca)Merge, copy; convert; extrude, revolveMerge, copy, refine; convert; boundary layers; extrude, revolve, sweep, loft for 3D geometiesExtrude, rotate, translation, refineUnion, difference, intersection, refineExtrude, rotate, translation, refineMerge, join, extrude, modular mesh modifier systemdistort/translate/rotate/scaleMerge, join, extrude, and revolve operations
Parallel possibilities
automatic mesh partitioning:Yes for parallel calculations (PTScotch, ParMetis)Task graph and mesh partitioning for DMPMETIS and space-filling curve partitioningYes (METIS)yes, shared (METIS/Parmetis) and distributed (p4est)partitioning with ElmerGrid using Metis or geometric division, internal partitioning in ElmerSolver using ZoltanNoMetis, Parmetis, Hilbert (shared and distributed meshes)Yes (ParMETIS and SCOTCH)Metis, Parmetis, HilbertYes
MPI:Yeson requestAlmost 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).YesYesYes (up to 147k processes), test for 4k processes and geometric multigrid for 147k, strong and weak scalingYes, demonstrated scalability up to 1000’s of coresNoYesYes, DOLFIN solver scales up to 24kYesYes, Scaling plot for Firedrake out to 24k cores.
threads:YesSupports multithreadingSupports multithreadingUsing OpenMP, RAJA, or OCCA backendsThreading Build BlocksSupports multithreadingthreadsafe, some modules threaded and vectorized.YesYesYes
OpenMP:YesYesYesYesYesYes (vectorization only)NoYes, partiallyYesYesYesLimited
OpenCL:NoNoNoThrough OCCA backendsNoNoNoNoNo
CUDA:NoYesNoYesNosince 9.1, see step-64 for matrix-free GPU+MPI exampleNoPreliminary API for sparse linear algebraNo
Solver
Dimension:0D/1D/2D/3D (dimensions may coexist)0D, 1D, 2D, 3D (can coexist)0D, 1D, 2D, 3D (can coexist)1D/2D/3DAny, possibility to mix and couple problem of different dimension1/2/3D2D1D/2D/3D (dimensions may coexist)0D/1D/2D/3D (dimensions may coexist)1/2/3D1/2/3D2D\3D1/2/3D1/2/3D
FE:Lagrange elements (isoparametric), mixed elements, structural mechanics elements (beam, plate)Lagrange (bubble,EAS, serendipity), beam and plate elements, control elements, RBC elements, HermiteLagrange (order 1-7), Hermite (order 3-7), discontinuous Lagrange (order 0-7), bubble, Gauss point, serendipity, NedelecArbitrary-order Lagrange elements (continuous and discontinuous), Bernstein basis, Nedelec and Raviart-Thomas elements, support for NURBS spaces (IGA)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 elementsLagrange elements, p-elements up to 10th order, Hcurl conforming elements (linear and quadratic) forLagrange elementsLagrange, Hierarchic, Discontinuous Monomials, NedelecLagrange, BDM, RT, Nedelic, Crouzeix-Raviart, all simplex elements in the Periodic Table (femtable.org), anyLagrange, Hierarchic, Discontinuous Monomials, NedelecLagrange (1st-5th order), Crouzeix-Raviart, HermiteLagrange, BDM, RT, Nedelec, all simplex elements and Q- quad elements in the Periodic Table, any
Quadrature:depending on the type of element (Gauss, Newton-Cotes, etc)Gauss-Legendre, Gauss-Lobatto and best element specific quadrature rules.Gauss-Legendre, Gauss-Lobatto, and uniform quadrature rules.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.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:YesYes, Newmark, HHT, Alpha MethodYes, BDF, Runge-Kutta (RK34, Cash-Karp 5, Dormand-Prince 5), and generalized alpha time steppingRunge-Kutta, SSP, SDIRK, Adams-Bashforth, Adams-Moulton, Symplectic Integration Algorithm, Newmark method, Generalized-alpha methodAny 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.YesYesimplicit-euler explicit-euler crank-nicolson bdf2 explicit-midpoint dirk explicit-tvd-rk-2 newmark-betaBE, CN, and Fractional-Step-Theta schemes
Predifined equations:Yes (mechanics, thermics, acoustics)heat transfer, linear elasticity, electromagnetics, pressure acoustics, fluid-structure interaction.Incompressible Navier-Stokes, heat transfer, convection-diffusion-reaction, linear elasticity, electromagnetics, pressure acoustics, Darcy’s law, and support for custom PDE equations A lot more via add-on modules.Miniapps and examples for Laplace, elasticity, Maxwell, Darcy, advection, Euler, Helmholtz, and othersLaplace?HelmholtzAround 50 predefined solversYes (Incompressible Navier-Stokes, Heat transfer (convection-conduction-radiation), Stress analysis, Soft body dynamics, Modal analysis, Electrostatics, Magnetostatics )Phase Field, Solid Mechanics, Navier-Stokes, Porous Flow, Level Set, Chemical Reactions, Heat Conduction, support for custom PDEsNoIncompressible Navier-Stokes, Heat transfer, convection-diffusion-reaction, linear elasticity, electromagnetics, Darcy’s, Brinkman equations, and support for custom PDE equations
Automated assembly:YesYesYesYesYesYes
Visualization:Paraview (Salome-Meca)Built-inBuilt-inIn situ visualization with GLVis. Export to VisIt and ParaView.External or with the Scilab/Matlab/Python interface. Possibility to perform complex slices.External (export to *.vtk and many others)Built-inElmerGUI comes VTK based visualization tool (but Paraview is recommended)GUI (built-in)Yes, VTK-based GUI, Python visualizatuion libraryBuil-in simple plotting + ExternalNoBuilt-in with optional Plotly and GMV exportExternal
Output format:MED, ASCIIText, PNG, GIF, JPEG, XLSX, Microsoft PowerPoint (for images). GIF, MP4, Windows MediaText and unstructured VTK-file for data.BMP,PNG, GIF, TIFF, JPEG, glTF, Windows clipboard, Microsoft PowerPoint (for images). GIF, Flash, AVI, WebM (for animatios). Touchstone data (for networks).VisIt, ParaView (VTU), GLVis formatvtk, gmsh, OpenDX.*.dx *.ucd *.gnuplot *.povray *.eps *.gmv *.tecplot *.tecplot_binary *.vtk *.vtu *.svg *.hdf5PNGSeveral output formats (VTU, gmsh,…)ExodusII, Xdr, etc.VTK(.pvd, .vtu) and XDMF/HDF5ExodusII, Xdr, etc.GMV and PlotlyVTK(.pvd, .vtu)
Boundary elements solver:Yes for Soil-Structure Interaction (Miss3D)NoYesNoYesNoExisting but without multipole acceleration (not usable for large problems)NoNo
Use multiple meshes:YesYes 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:BLAS/LAPACK, MUMPS (and SCALAPACK), PETScMUMPS, SPOOLES; ARPACK, BLAS, BLIS, Intel MKL, LAPACKMUMPS, PARDISO, SPOOLES; ARPACK, BLAS, BLIS, Intel MKL, LAPACKBuilt-in and integrated with hypre. Optional integrations with PETSc, Ginkgo, SuperLU, Suite Sparse, libCEED, and moreSuperLU, MUMPS, Built-in.Built-in + Trilinos, PETSc, and SLEPcARPACK, BLAS, LAPACKBuilt-in, Hypre, Trilinos, umfpack, MUMPS, Pardiso, etc. (optional)NoPETSc, Trilinos, LASPack, SLEPcPETSc, Trilinos/TPetra, Eigen.PETSc, Trilinos, LASPack, SLEPcMatlab/Octave built-in (Umfpack), supports integration with the FEniCS and FeatFlow solversPETSc
Iterative matrix solvers:GMRES, CG, GCR, CR, FGMRES (via PETSc)GMRES, PCG, (P-)Multigrid, Contact-Multigrid, FETIGMRES, FGMRES, BiCGStab, conjugate gradients, TFQMR, or any precoditioner. Algebraic and geometric multigrid. Domain decomponsition (Schwarz, Schur)Krylov methods (CG, MINRES, GMRES, BiCGStab)All KrylovAll Krylov (CG, Minres, GMRES, BiCGStab, QMRS)Built-in Krylov solvers, Krylov and multigrid solvers from external librariesGMRES, CGLASPack serial, PETSc parallelLASPack serial, PETSc parallelMatlab/Octave built-in
Preconditioners:ILU, Jacobi, Simple Precision Preconditioner (via MUMPS)diverseDirect preconditioner, Krylov, SOR, SSOR, SORU, SOR line, SOR gauge, SOR vector, Jacobi, incomplete and hierarchical LU, SAI, SCGS, Vanka, AMSAlgebraic, Geometric, and p-multigrid. Block ILU preconditioning. Support for hypre’s AMS and ADS preconditioners for H(curl) and H(div).Basic ones (ILU, ILUT)Many, including algebraic multigrid (via Hypre and ML) and geometric multigridBuilt-in preconditioners (ILU, diagonal, vanka, block) andILU, JacobiLASPack serial, PETSc parallel, algebraic multigrid (via Hypre)LASPack serial, PETSc parallelMatlab/Octave built-in
Matrix-free
matrix-free:NoYesYesYesNoYesNoExperimental implementationNoYes
matrix-free save memory:NoYesNoYesNo
matrix-free speed-up:NoYesNoYesNo
Used language
Native language:Fortran 90, PythonPrimarily Fortran and C++ , PythonPrimarily C++ and JavaC++C++C++C++Fortran (2008 standard)C++C++C++C++Matlab / OctavePython (and generated C)
Bindings to language:PythonFortran, C, PythonFull API for Java and Matlab (the latter via add-on product)PyMFEMPython, Scilab or MatlabNoLuaNoPython
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 analysisYes, many predefined physicsYes, many predefined physics and multiphysics interfaces in COMSOL Multiphysics and its add-ons.A large number of Bilinear and Linear formsModel bricks: Laplace, linear and nonlinear elasticity, Helmholtz, plasticity, Mindlin and K.L. plates, boundary conditions including contact with friction.No
Coupled nonlinear problems:thermo-hydro-mechanical problem for porous media, coupling with Code_Saturne CFD software for Fluid-Structure Interaction via SALOME platformYesYesYesYesNo
Binary:Yes for Salome-Meca (Linux)Windows, LinuxWindows, Linux, macOSYes, via OpenHPC. Also available as part of Spack, xSDK, E4S, FASTMath, RADIUSS and CEED.Linux (Debian/Ubuntu)Linux, Windows (work in progress), MacWindows, Linux, macOSWindows, Linux (launchpad: Debian/Ubuntu), Mac (homebrew) (all with MPI)Linux (Debian\Ubuntu), MacWindows, Linux, MacNo. Automated installers for Linux and Mac
Testing:More than 3500 verification testcases covering all features and providing easy starting points for beginnersMore than 6000 regular QA testshttps://www.comsol.com/legal/quality-policyComprehensive unit and regression tests. Continuous integration through Travis CI3500+ testsMore than 700 consistency tests ensuring backward compatibility4300+ tests, Testing as a service for derived applications
fullname:Analyse des Structures et Thermo-mécanique pour des Études et des Recherches (ASTER)Elmer finite element software
scripting:PythonFull API for Java and, through add-on product, MatlabLuaRuntime parsed mathematical expression in input filesFully scriptable in as m-file Matlab scripts and the GUI supports exporting models in script format
automatic differentiation:YesYesYesForward-mode for Jacobian computation, symbolic differentiation capabilities
multiphysics:Yes, full custom and predefined multiphysics couplings between all kinds of physicsYes, full custom and predefined multiphysics couplings between all kinds of physicsArbitrary multiphysics couplings are supportedNoArbitrary multiphysics couplings are supportedArbitrary multiphysics couplings are supported
Optimization Solvers:Adaptive Monte Carlo, Latin Hypercube Sampling, Response surface, SCP, SLP, SQP, ACP, COBYLA, GCA, MS (multistart), OC (optimality criteria) , WLIN, dividing rectangle, design centeringWith the Optimization Module add-on: Coorinate search, Nelder-Mead, Monte Carlo, BOBYQA, COBYLA, SNOPT, MMA, Levenberg-MarquardtIntegration with HiOp. Built-in SLBQP optimizerLevenberg-Marquardt, Subspace doglegSupport for TAO- and nlopt-based constrained optimization solvers incorporating gradient and Hessian information.Support for TAO- and nlopt-based constrained optimization solvers incorporating gradient and Hessian information.
HIP:Yes
Symbolic derivation of the tangent system for nonlinear problems:Yes
Support for fictitious domain methods:Yes
Wilkinson Prize:20072015 for dolfin-adjoint

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 colon : is treated as a key, the other part till the end of the line as value. Lines without colon 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 listed afterwards. Keys are always carried with colon, 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). It will also emmit tmp.wiki so you can update the related Wikipedia page.

Contribution

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