libMesh github repository
Latest commit 6672f0f Sep 24, 2018
Permalink
Failed to load latest commit information.
build-aux ran bootstrap Nov 11, 2015
contrib Update metaphysicl to get --disable-cxx14 changes. Sep 7, 2018
doc Update traffic. Sep 24, 2018
examples Use cast_int+fix int type choices in some examples Aug 20, 2018
include Merge pull request #1865 from libMesh/overzealous_assert Sep 24, 2018
m4 Merge pull request #1845 from lindsayad/metaphysicl-submodule Sep 7, 2018
reference_elements Fix one_pyramid14.xda. Feb 4, 2016
src Merge pull request #1865 from libMesh/overzealous_assert Sep 24, 2018
tests Fix 64-bit regression in unit test. Sep 5, 2018
.gitignore Changes for compiling on Windows with MSys2. Aug 2, 2017
.gitmodules Add metaphysicl as submodule Sep 5, 2018
.mailmap Update .mailmap Jan 19, 2018
AUTHORS test commit Jan 3, 2013
CITATION Fix indentation and formatting in CITATION file. May 3, 2017
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.am Use $ANY_PARANOID_FLAGS on internal library code Jul 16, 2018
Makefile.in Run bootstrap. Aug 22, 2018
NEWS Merge in NEWS file updates from 1.3.0 release. Apr 9, 2018
README So, bootstrap requires a README file to be there. Oops. Apr 17, 2014
README.md Update README.md Sep 11, 2017
aclocal.m4 Run bootstrap. Jun 15, 2018
bootstrap build bundled automake-1.15 Nov 10, 2015
configure Merge pull request #1845 from lindsayad/metaphysicl-submodule Sep 7, 2018
configure.ac Fix paranoid-compiler-warning error messages Aug 27, 2018

README.md

Build Instructions

The default is to build libmesh "out of tree," i.e. within a separate build directory, rather than in the source tree itself. This simplifies the process of having multiple, independently-configured builds.

  1. cd to location of libmesh clone or extracted tarball.
  2. mkdir build
  3. cd build
  4. ../configure --prefix=/path/to/libmesh/install
  5. make
  6. make check (optional, runs the example programs and unit tests when possible)
  7. make install

METHODS

libMesh supports the notion of multiple methods, that is, configuration 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. Aggressive optimization flags are used.

  • dbg: Full debugging mode. All useful compiler warnings are enabled, as well as robust internal state checking. The asymptotic complexity of some algorithms is allowed to be worse than the design spec states.

  • 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"

or

../configure METHODS="devel oprof"

If unspecified, METHODS="opt dbg devel" is the 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 available and accessible via modules, you can share the same source tree by creating a subdirectory for each compiler build:

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

Dependencies

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 these are distributed inside the contrib directory and compiled directly with libMesh, others can be used via third-party installations.

License

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