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:

\[b_i = A_{ij} x_j\]

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:

\[b_i = A_{ij} x_j\]

MatrixDiagonalPartitioned::dot_u(…)#

Dot-product:

\[b_i = A_{ij} x_j\]

MatrixDiagonalPartitioned::dot_p(…)#

Dot-product:

\[b_i = A_{ij} x_j\]

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