libMesh - A C++ Finite Element Library

The libMesh library is a C++ framework for the numerical simulation of partial differential equations on serial and parallel platforms. Development began in March 2002 with the intent of providing a friendly interface to a number of high-quality software packages that are currently available.

A major goal of the library is to provide support for adaptive mesh refinement (AMR) computations in parallel while allowing a research scientist to focus on the physics they are modeling. The library currently offers:

  • Partitioning Algorithms
    • Metis K-Way weighted graph partitioning
    • Parmetis parallel graph partitioning
    • Hilbert and Morton-ordered space filling curves
  • Generic 2D Finite Elements
    • 3 and 6 noded triangles (Tri3, Tri6)
    • 4, 8, and 9 noded quadrilaterals (Quad4, Quad8, Quad9)
    • 4 and 6 noded infinite quadrilaterals (InfQuad4, InfQuad6)
  • Generic 3D Finite Elements
    • 4 and 10 noded tetrahedrals (Tet4, Tet10)
    • 8, 20, and 27 noded hexahedrals (Hex8, Hex20, Hex27)
    • 6, 15, and 18 noded prisms (Prism6, Prism15, Prism18)
    • 5 noded pyramids (Pyramid5)
    • 8, 16, and 18 noded infinite hexahedrals (InfHex8, InfHex16, InfHex18)
    • 6 and 12 noded infinite prisms (InfPrism6, InfPrism12)
  • Generic Finite Element Families
    • Lagrange
    • Hierarchic
    • Discontinuous Monomials
  • Dimension-independence
    • Operators are defined to allow the same code to run unmodified on 2D and 3D applications
    • The code you debug and verify on small 2D problems can immediately be applied to large, parallel 3D applications
  • Sparse Linear Algebra
    • PETSc provides a suite of iterative solvers and preconditioners for serial and parallel applications
    • Complex values are supported with PETSc
    • LASPACK provides iterative solvers and preconditioners for serial applications
    • The SparseMatrix, NumericVector, and LinearSolver allow for transparent switching between solver packages. Adding a new solver interface is as simple as deriving from these classes
  • Mesh IO & Format Translation Utilities
    • Ideas Universal (UNV) format (.unv) with support through MeshData for arbitrary float data, like boundary conditions, associated with mesh entities
    • Sandia National Labs ExodusII format (.exd)
    • Amtec Engineering's Tecplot binary format (.plt)
    • Amtec Engineering's Tecplot ascii format (.dat)
    • Los Alamos National Labs GMV format (.gmv)
    • AVS Unstructured UCD format (.ucd)
  • Mesh Creation & Modification Utilities
    • refine or coarsen a mesh: prescribed, level-one-compatible, or uniform
    • build equispaced n-cubes out of Edge2, Tri3, Tri6, Quad4, Quad8, Quad9, Hex8, Hex20, Hex27
    • build circles/spheres out of Tri3, Tri6, Quad4, Quad8, Quad9, Hex8
    • add infinite elements to a volume-based mesh, handle symmetry planes
    • convert Quad4, Quad8, Quad9 to Tri3, Tri6
    • convert a mesh consisting of any of the fore-mentioned n-dimensional linear elements to their second-order counterparts
    • distort/translate/rotate/scale a mesh
    • determine bounding boxes/spheres
    • extract the mesh boundary for boundary condition handling or as a separate mesh

Site Created By: libMesh Developers
Last modified: February 07 2014 16:57:51 UTC

Hosted By:
SourceForge.net Logo