GRINS
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.
Examples
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.
Installation
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 bootstrap.sh 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:
License
GRINS is released under the LGPL 2.1 license. See the LICENSE file for details.
Contributing
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:
- grins-users mailing list for questions regarding usage and reporting bugs
-
grins-devel mailing list for discussion regarding development of
GRINS
Citing GRINS
If you use GRINS in your work, we ask that you please cite GRINS and libMesh:
@article{libMeshPaper,
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{http://dx.doi.org/10.1007/s00366-006-0049-3}}
}
@article{GRINSPaper,
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},
volume={38},
number={5},
pages={S78-S100}
}