Class GooseFEM::MatrixBase#

template<class D>
class MatrixBase#

CRTP base class for a matrix.

Subclassed by GooseFEM::MatrixPartitionedBase< MatrixDiagonalPartitioned >, GooseFEM::MatrixPartitionedBase< MatrixPartitioned >, GooseFEM::MatrixPartitionedBase< MatrixPartitionedTyings >, GooseFEM::MatrixPartitionedBase< D >

Public Types

using derived_type = D#

Underlying type.

Public Functions

inline size_t nelem() const#

Number of elements.

Returns

Unsigned integer.

inline size_t nne() const#

Number of nodes per element.

Returns

Unsigned integer.

inline size_t nnode() const#

Number of nodes.

Returns

Unsigned integer.

inline size_t ndim() const#

Number of dimensions.

Returns

Unsigned integer.

inline size_t ndof() const#

Number of DOFs.

Returns

Unsigned integer.

inline const array_type::tensor<size_t, 2> &dofs() const#

DOFs per node.

Returns

[nnode, ndim].

inline const array_type::tensor<size_t, 2> &conn() const#

Connectivity.

Returns

[nelem, nne].

inline std::array<size_t, 1> shape_dofval() const#

Shape of “dofval”.

Returns

[ndof].

inline std::array<size_t, 2> shape_nodevec() const#

Shape of “nodevec”.

Returns

[nnode, ndim].

inline std::array<size_t, 3> shape_elemmat() const#

Shape of “elemmat”.

Returns

[nelem, nne * ndim, nne * ndim].

template<class T>
inline void assemble(const T &elemmat)#

Assemble from “elemmat”.

Parameters

elemmat – [nelem, nne * ndim, nne * ndim].

inline array_type::tensor<double, 2> Todense() const#

Copy as dense matrix.

Returns

[ndof, ndof].

template<class T>
inline void todense(T &ret) const#

Copy to dense matrix.

Parameters

ret – overwritten [ndof, ndof].

inline array_type::tensor<double, 2> Dot(const array_type::tensor<double, 2> &x) const#

Dot-product \( b_i = A_{ij} x_j \).

Parameters

x – nodevec [nelem, ndim].

Returns

b nodevec [nelem, ndim].

inline array_type::tensor<double, 1> Dot(const array_type::tensor<double, 1> &x) const#

Dot-product \( b_i = A_{ij} x_j \).

Parameters

x – dofval [ndof].

Returns

b dofval [ndof].

inline void dot(const array_type::tensor<double, 2> &x, array_type::tensor<double, 2> &b) const#

Dot-product \( b_i = A_{ij} x_j \).

Parameters
inline void dot(const array_type::tensor<double, 1> &x, array_type::tensor<double, 1> &b) const#

Dot-product \( b_i = A_{ij} x_j \).

Parameters
  • x – dofval [ndof].

  • b – (overwritten) dofval [ndof].