libMesh github repository
C C++ Makefile Fortran HTML Shell Other
Latest commit 4442284 Feb 20, 2017 @roystgnr roystgnr committed on GitHub Merge pull request #1249 from roystgnr/loose_bounding_box
Use Elem::loose_bounding_box() in TreeNode searches
Failed to load latest commit information.
build-aux ran bootstrap Nov 11, 2015
contrib Fix new unused-variable warnings in contrib. Jan 25, 2017
doc Update traffic. Feb 19, 2017
examples Remove spurious mesh_data.h inclusion from misc_ex5. Feb 17, 2017
include Merge pull request #1249 from roystgnr/loose_bounding_box Feb 20, 2017
m4 Add '-Wunused -Wunused-parameter' for clang in all modes. Jan 25, 2017
reference_elements Fix one_pyramid14.xda. Feb 4, 2016
src Merge pull request #1249 from roystgnr/loose_bounding_box Feb 20, 2017
tests Merge pull request #1249 from roystgnr/loose_bounding_box Feb 20, 2017
.gitignore Ignore .pyc files. Oct 12, 2015
.mailmap Update .mailmap. Nov 10, 2016
AUTHORS test commit Jan 3, 2013
CITATION Adding a CITATION file. Jul 10, 2014
COPYING Everyone wants a README, so might as well add AUTHORS, COPYING, and I… Dec 11, 2012
ChangeLog point to GitHub commit log (#3) Dec 11, 2012
INSTALL ran bootstrap Nov 11, 2015 Makefile updates for splitter app Nov 16, 2016 Merge pull request #1249 from roystgnr/loose_bounding_box Feb 20, 2017
NEWS Merge in NEWS file updates from 1.1.0 branch. Dec 5, 2016
README So, bootstrap requires a README file to be there. Oops. Apr 17, 2014 trivial change to test new JSC buildbot Oct 18, 2016
aclocal.m4 Run bootstrap. Jan 20, 2016
bootstrap build bundled automake-1.15 Nov 10, 2015
configure Add '-Wunused -Wunused-parameter' for clang in all modes. Jan 25, 2017 Update version to 1.2.0-pre. Dec 5, 2016

libMesh-specific configuration options

For generic installation instructions, refer also to the INSTALL file.

Build Process

  1. ./bootstrap (optional, needed only if you add/modify m4 files or

  2. ./configure --prefix=/path/to/libmesh/install

  3. make

  4. make check (optional, runs the example programs and unit tests when possible)

  5. make install


libMesh supports the notion of multiple methods - that is, compilation settings used to build the library. The major methods supported by the library are:

  • opt: Fully Optimized mode, with little to no error checking. No debugging symbols are included in the resulting library. Agressive optimization flags are used.

  • dbg: Full debugging mode - all useful compiler warnings are enabled, as well as robust internal state checking.

  • devel: Use high levels of compiler optimization, but also enable internal state checking. Debugging symbols are included, but the resulting code is not always easy to navigate in a debugger because of compiler optimizations.

  • pro: Optimized code path with compiler flags suitable for use with gprof.

  • oprof: Optimized code path with compiler flags suitable for use with oprofile.

To select a set of methods, you can pass them to configure in one of two ways:

$ ./configure --with-methods="opt dbg devel"


$ ./configure METHODS="devel oprof"

If unspecified, the three METHODS="opt dbg devel" are default.

Multiple Builds with Different Compilers

libMesh fully supports out-of-tree builds, and users are encouraged to use this feature when needed to support multiple compilers. For example, on a system where multiple compilers are availble and accessible via modules, you can share the same source tree by creating a subdirectory for each compiler build:

$ export LIBMESH_SRC=/local/libmesh
$ module load gcc/4.8
$ cd $LIBMESH_SRC && mkdir gcc-4.8 && cd gcc-4.8 && ../configure && make && make install
$ module swap gcc intel/16.0
$ cd $LIBMESH_SRC && mkdir intel-16.0 && cd intel-16.0 && ../configure && make && make install


libMesh has no required dependencies other than a reasonably modern C & C++ compiler. To run on distributed memory platforms in parallel you will also need MPI.

Optional Packages

We support a large number of optional packages, some of which are distributed inside the ./contrib directory and are compiler directly with libMesh, others can be used from third-party installation. For a list of supported packages and optional dependencies see here


LibMesh is open source software distributed under the LGPL license, version 2.1.