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}
}