GPLv3 license GPLv3 license Download as .zip Download as .tar.gz
Contact Website Github tdegeus/GooseFEM


This library is free to use under the GPLv3 license. Any additions are very much appreciated, in terms of suggested functionality, code, documentation, testimonials, word of mouth advertisement, …. Bugs or feature requests can be filed on GitHub. As always, the code comes with no guarantee. None of the developers can be held responsible for possible mistakes.


This document should be considered as a quick-start guide. A lot effort has been spent on the readability of the code itself (in particular the *.h files should be instructive). One is highly encouraged to answer more advanced questions that arise from this guide directly using the code. Download buttons to the relevant files are included throughout this reader.

This header-only module provides C++ classes and several accompanying methods to work with n-d arrays and/or tensors. It’s usage, programmatically and from a compilation perspective, is really simple. One just has to #include <GooseFEM/GooseFEM.h> and tell your compiler where GooseFEM is located (and to use the C++14 or younger standard). Really, that’s it!



Beyond the default C++ types, GooseFEM use Eigen columns/matrices and cppmat multi-dimensional arrays. In particular:

Type Description
MatD row-major Eigen::matrix
ColD (column-major) Eigen::Matrix (column)
SpMatD row-major Eigen::SparseMatrix
ArrD multi-dimensional cppmat::array

The last letter thereby indicates the type specialisation:

Indicator Description
D double
S size_t
I int


Alias Description Type Shape
“dofval” degrees-of-freedom ColD [ndof]
“nodevec” nodal vectors MatD [nnode, ndim]
“elemvec” nodal vectors stored per element ArrD [nelem, nne, ndim]
“elemmat” matrices stored per element ArrD [nelem, nne*ndim, nne*ndim]
“qtensor” tensors stored (as list) per integration point ArrD [nelem, nip, #tensor-components]
“qscalar” scalars stored per integration point ArrD [nelem, nip]




A compact reader covering the basic theory is available here

Indices and tables