Matrix#
GooseFEM/Matrix.hpp
GooseFEM/MatrixPartitioned.hpp
GooseFEM/MatrixPartitionedTyings.hpp
GooseFEM/MatrixDiagonal.hpp
GooseFEM/MatrixDiagonalPartitioned.hpp
Matrix#
Matrix definition.
Matrix::nelem()#
Return the number of elements.
Matrix::nne()#
Return the number of nodes-per-element.
Matrix::nnode()#
Return the number of nodes.
Matrix::ndim()#
Return the number of dimensions.
Matrix::ndof()#
Return the number of DOFs.
Matrix::dofs()#
Return the DOF-numbers per node [nnode, ndim].
Matrix::assemble(…)#
Assemble matrix from element matrices stored as “elemmat”.
Matrix::dot(…)#
Matrix vector product.
MatrixSolver#
Note
A solver has to be chosen, see Linear solver.
MatrixSolver::solve(…)#
Solve linear system.
MatrixPartitioned#
Partitioned matrix definition.
Note
A solver has to be chosen, see Linear solver.
MatrixPartitioned::nelem()#
Return the number of elements.
MatrixPartitioned::nne()#
Return the number of nodes-per-element.
MatrixPartitioned::nnode()#
Return the number of nodes.
MatrixPartitioned::ndim()#
Return the number of dimensions.
MatrixPartitioned::ndof()#
Return the number of DOFs.
MatrixPartitioned::nnu()#
Return the number of unknown DOFs.
MatrixPartitioned::nnp()#
Return the number of prescribed DOFs.
MatrixPartitioned::dofs()#
Return the DOF-numbers per node [nnode, ndim].
MatrixPartitioned::iiu()#
Return the unknown DOF-numbers per node [nnu].
MatrixPartitioned::iip()#
Return the prescribed DOF-numbers per node [nnp].
MatrixPartitioned::assemble(…)#
Assemble matrix from element matrices stored as “elemmat”.
MatrixPartitioned::reaction(…)#
Compute reaction forces (part of “b” that corresponds to “x_p”).
MatrixPartitioned::reaction_p(…)#
Compute reaction forces (part of “b” that corresponds to “x_p”).
MatrixPartitioned::dot(…)#
Matrix vector product.
MatrixPartitionedSolver#
Note
A solver has to be chosen, see Linear solver.
MatrixPartitionedSolver::solve(…)#
Solve linear system.
MatrixPartitionedSolver::solve_u(…)#
Solve linear system.
MatrixPartitionedTyings#
Partitioned matrix definition with nodal tyings.
Note
A solver has to be chosen, see Linear solver.
MatrixPartitionedTyings::nelem()#
Return the number of elements.
MatrixPartitionedTyings::nne()#
Return the number of nodes-per-element.
MatrixPartitionedTyings::nnode()#
Return the number of nodes.
MatrixPartitionedTyings::ndim()#
Return the number of dimensions.
MatrixPartitionedTyings::ndof()#
Return the number of DOFs.
MatrixPartitionedTyings::nnu()#
Return the number of unknown DOFs.
MatrixPartitionedTyings::nnp()#
Return the number of prescribed DOFs.
MatrixPartitionedTyings::nni()#
Return the number of independent DOFs.
MatrixPartitionedTyings::nnd()#
Return the number of dependent DOFs.
MatrixPartitionedTyings::dofs()#
Return the DOF-numbers per node [nnode, ndim].
MatrixPartitionedTyings::iiu()#
Return the unknown DOF-numbers per node [nnu].
MatrixPartitionedTyings::iip()#
Return the prescribed DOF-numbers per node [nnp].
MatrixPartitionedTyings::iii()#
Return the independent DOF-numbers per node [nni].
MatrixPartitionedTyings::iid()#
Return the dependent DOF-numbers per node [nnd].
MatrixPartitionedTyings::assemble(…)#
Assemble matrix from element matrices stored as “elemmat”.
MatrixPartitionedTyings::dot(…)#
Matrix vector product.
MatrixPartitionedTyingsSolver#
Note
A solver has to be chosen, see Linear solver.
MatrixPartitionedTyingsSolver::solve(…)#
Solve linear system.
MatrixPartitionedTyingsSolver::solve_u(…)#
Solve linear system.
MatrixDiagonal#
Diagonal matrix definition.
MatrixDiagonal::nelem()#
Return the number of elements.
MatrixDiagonal::nne()#
Return the number of nodes-per-element.
MatrixDiagonal::nnode()#
Return the number of nodes.
MatrixDiagonal::ndim()#
Return the number of dimensions.
MatrixDiagonal::ndof()#
Return the number of DOFs.
MatrixDiagonal::dofs()#
Return the DOF-numbers per node [nnode, ndim].
MatrixDiagonal::assemble(…)#
Assemble matrix from element matrices stored as “elemmat”.
MatrixDiagonal::dot(…)#
Dot-product:
MatrixDiagonal::solve(…)#
Solve linear system.
MatrixDiagonal::Todiagonal(…)#
Return matrix as diagonal matrix (column)
MatrixDiagonalPartitioned#
Diagonal and partitioned matrix definition.
MatrixDiagonalPartitioned::nelem()#
Return the number of elements.
MatrixDiagonalPartitioned::nne()#
Return the number of nodes-per-element.
MatrixDiagonalPartitioned::nnode()#
Return the number of nodes.
MatrixDiagonalPartitioned::ndim()#
Return the number of dimensions.
MatrixDiagonalPartitioned::ndof()#
Return the number of DOFs.
MatrixDiagonalPartitioned::nnu()#
Return the number of unknown DOFs.
MatrixDiagonalPartitioned::nnp()#
Return the number of prescribed DOFs.
MatrixDiagonalPartitioned::dofs()#
Return the DOF-numbers per node [nnode, ndim].
MatrixDiagonalPartitioned::iiu()#
Return the unknown DOF-numbers per node [nnu].
MatrixDiagonalPartitioned::iip()#
Return the prescribed DOF-numbers per node [nnp].
MatrixDiagonalPartitioned::assemble(…)#
Assemble matrix from element matrices stored as “elemmat”.
MatrixDiagonalPartitioned::dot(…)#
Dot-product:
MatrixDiagonalPartitioned::dot_u(…)#
Dot-product:
MatrixDiagonalPartitioned::dot_p(…)#
Dot-product:
MatrixDiagonalPartitioned::solve(…)#
Solve linear system.
MatrixDiagonalPartitioned::solve_u(…)#
Solve linear system.
MatrixDiagonalPartitioned::reaction(…)#
Compute reaction forces (part of “b” that corresponds to “x_p”).
MatrixDiagonalPartitioned::reaction_p(…)#
Compute reaction forces (part of “b” that corresponds to “x_p”).
MatrixDiagonalPartitioned::Todiagonal(…)#
Return matrix as diagonal matrix (column)
Linear solver#
The classes GooseFEM:::MatrixPartitioned
and GooseFEM:::MatrixPartitionedTyings
make use of a library to solver the linear system (stored as a sparse matrix). In particular the Eigen library and its plug-ins are used. To use the library’s default solver:
#include <Eigen/Eigen>
#include <GooseFEM/GooseFEM.h>
int main()
{
...
GooseFEM::MatrixPartitioned<> K(...);
...
return 0;
}
The default solver can, however, be quite slow. Therefore Eigen has quite some plug-ins for the solver. GooseFEM allows the use of Eigen’s Sparse Solver Concept to use such plug-ins. For example, to use SuiteSparse:
#include <Eigen/Eigen>
#include <Eigen/CholmodSupport>
#include <GooseFEM/GooseFEM.h>
int main()
{
...
GooseFEM::MatrixPartitioned<Eigen::CholmodSupernodalLLT<Eigen::SparseMatrix<double>>> K(...);
...
return 0;
}