View on GitHub

GRINS Multiphysics Finite Element Package

GRINS: A C++ Multiphysics Finite Element Package based on the libMesh Finite Element Library


GRINS is a C++ finite element framework that aims to quickly enable the simulation of complex mathematical models by reusing developed modeling capabilities while also simplifying the introduction of new capabilities. It is built on top of the libMesh finite element library. GRINS may used as an application, with the all the capabilities there-in, or as a library from which you can extend to build your own specialized application.


Several examples are included illustrating the use of the input file, together with a mesh built by libMesh internally or reading a mesh constructed by an external mesh generator, to build and run complex multiphysics applications. The master example input file contains more detailed documentation about the options. Note this is currently still being fully populated, so not everything is currently described in detail.


GRINS requires a libMesh installation. We also highly recommend your libMesh installation be built with PETSc. For distributed-memory parallelism, libMesh and GRINS must be built with MPI. GRINS requires a C++11 compiler.

Release tarballs are available here. We use autotools so follow the configure; make; make install paradigm. If cloning from the main repository, you will need to run the script first (this step requires an autotools installation) then proceed with configure; make; make install. Out-of-source (VPATH) and parallel builds are supported. Additionally, you can check the GRINS installation by running make check (again, may be run in parallel).

Help is available using configure --help. By default, GRINS is built with optimization enabled and debugging turned off. Use METHOD=dbg or METHOD=devel at configure time to enable debugging flags.

Code Documentation

Online Doxygen pages are available here for the current GRINS release.

Documentation for older versions:


GRINS is released under the LGPL 2.1 license. See the LICENSE file for details.


We welcome feedback/bug reports through GitHub Issues on the GRINS page. We also welcome contributed enhancements and bug fixes through pull requests.

User Support

If you have questions or need help with using or contributing to GRINS, feel free to ask questions on one of the mailing lists:

Citing GRINS

If you use GRINS in your work, we ask that you please cite GRINS and libMesh:

         author = {B.~S.~Kirk and J.~W.~Peterson and R.~H.~Stogner and G.~F.~Carey},
         title = {{\texttt{libMesh}: A C++ Library for Parallel Adaptive Mesh
                  Refinement/Coarsening Simulations}},
         journal = {Engineering with Computers},
         volume = {22},
         number = {3--4},
         pages = {237--254},
         year = {2006},
         note = {\url{}}

         author = {P.~T.~Bauman and R.~H.~Stogner},
         title = {GRINS: A Multiphysics Framework Based on the libMesh Finite Element Library},
         journal = {SIAM Journal on Scientific Computing},