CRTP base class for interpolation and quadrature for a generic element in Cartesian coordinates.
More...
|
template<class T > |
void | update_x (const T &x) |
| Update the nodal positions.
|
|
auto | GradN () const -> const array_type::tensor< double, 4 > & |
| Shape function gradients (in global coordinates).
|
|
auto | dV () const -> const array_type::tensor< double, 2 > & |
| Integration volume.
|
|
template<class T > |
auto | InterpQuad_vector (const T &elemvec) const -> array_type::tensor< double, 3 > |
| Interpolate element vector and evaluate at each quadrature point.
|
|
template<class T , class R > |
void | interpQuad_vector (const T &elemvec, R &qvector) const |
| Same as InterpQuad_vector(), but writing to preallocated return.
|
|
template<class T > |
auto | GradN_vector (const T &elemvec) const -> array_type::tensor< double, 4 > |
| Element-by-element: dyadic product of the shape function gradients and a nodal vector.
|
|
template<class T , class R > |
void | gradN_vector (const T &elemvec, R &qtensor) const |
| Same as GradN_vector(), but writing to preallocated return.
|
|
template<class T > |
auto | GradN_vector_T (const T &elemvec) const -> array_type::tensor< double, 4 > |
| The transposed output of GradN_vector().
|
|
template<class T , class R > |
void | gradN_vector_T (const T &elemvec, R &qtensor) const |
| Same as GradN_vector_T(), but writing to preallocated return.
|
|
template<class T > |
auto | SymGradN_vector (const T &elemvec) const -> array_type::tensor< double, 4 > |
| The symmetric output of GradN_vector().
|
|
template<class T , class R > |
void | symGradN_vector (const T &elemvec, R &qtensor) const |
| Same as SymGradN_vector(), but writing to preallocated return.
|
|
template<class T > |
auto | Int_N_vector_dV (const T &qvector) const -> array_type::tensor< double, 3 > |
| Element-by-element: integral of a continuous vector-field.
|
|
template<class T , class R > |
void | int_N_vector_dV (const T &qvector, R &elemvec) const |
| Same as Int_N_vector_dV(), but writing to preallocated return.
|
|
template<class T > |
auto | Int_N_scalar_NT_dV (const T &qscalar) const -> array_type::tensor< double, 3 > |
| Element-by-element: integral of the scalar product of the shape function with a scalar.
|
|
template<class T , class R > |
void | int_N_scalar_NT_dV (const T &qscalar, R &elemmat) const |
| Same as Int_N_scalar_NT_dV(), but writing to preallocated return.
|
|
template<class T > |
auto | Int_gradN_dot_tensor2_dV (const T &qtensor) const -> array_type::tensor< double, 3 > |
| Element-by-element: integral of the dot product of the shape function gradients with a second order tensor.
|
|
template<class T , class R > |
void | int_gradN_dot_tensor2_dV (const T &qtensor, R &elemvec) const |
| Same as Int_gradN_dot_tensor2_dV(), but writing to preallocated return.
|
|
template<class T > |
auto | Int_gradN_dot_tensor4_dot_gradNT_dV (const T &qtensor) const -> array_type::tensor< double, 3 > |
| Element-by-element: integral of the dot products of the shape function gradients with a fourth order tensor.
|
|
template<class T , class R > |
void | int_gradN_dot_tensor4_dot_gradNT_dV (const T &qtensor, R &elemmat) const |
| Same as Int_gradN_dot_tensor4_dot_gradNT_dV(), but writing to preallocated return.
|
|
auto | nelem () const |
| Number of elements.
|
|
auto | nne () const |
| Number of nodes per element.
|
|
auto | ndim () const |
| Number of dimensions for node vectors.
|
|
auto | tdim () const |
| Number of dimensions for integration point tensors.
|
|
auto | nip () const |
| Number of integration points.
|
|
template<class T , class R > |
void | asTensor (const T &arg, R &ret) const |
| Convert "qscalar" to "qtensor" of certain rank.
|
|
template<size_t rank, class T > |
auto | AsTensor (const T &arg) const |
| Convert "qscalar" to "qtensor" of certain rank.
|
|
template<class T > |
auto | AsTensor (size_t rank, const T &arg) const |
| Convert "qscalar" to "qtensor" of certain rank.
|
|
auto | shape_elemvec () const -> std::array< size_t, 3 > |
| Get the shape of an "elemvec".
|
|
auto | shape_elemvec (size_t arg) const -> std::array< size_t, 3 > |
| Get the shape of an "elemvec".
|
|
auto | shape_elemmat () const -> std::array< size_t, 3 > |
| Get the shape of an "elemmat".
|
|
template<size_t rank = 0> |
auto | shape_qtensor () const -> std::array< size_t, 2+rank > |
| Get the shape of a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
auto | shape_qtensor (size_t rank) const -> std::vector< size_t > |
| Get the shape of a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
template<size_t trank> |
auto | shape_qtensor (size_t rank, size_t arg) const -> std::array< size_t, 2+trank > |
| Get the shape of a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
auto | shape_qtensor (size_t rank, size_t arg) const -> std::vector< size_t > |
| Get the shape of a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
auto | shape_qscalar () const -> std::array< size_t, 2 > |
| Get the shape of a "qscalar" (a "qtensor" of rank 0)
|
|
auto | shape_qvector () const -> std::array< size_t, 3 > |
| Get the shape of a "qvector" (a "qtensor" of rank 1)
|
|
auto | shape_qvector (size_t arg) const -> std::array< size_t, 3 > |
| Get the shape of a "qvector" (a "qtensor" of rank 1)
|
|
template<class R > |
auto | allocate_elemvec () const |
| Get an allocated array_type::tensor to store a "elemvec".
|
|
template<class R > |
auto | allocate_elemvec (R val) const |
| Get an allocated and initialised xt::xarray to store a "elemvec".
|
|
template<class R > |
auto | allocate_elemmat () const |
| Get an allocated array_type::tensor to store a "elemmat".
|
|
template<class R > |
auto | allocate_elemmat (R val) const |
| Get an allocated and initialised xt::xarray to store a "elemmat".
|
|
template<size_t rank = 0, class R > |
auto | allocate_qtensor () const |
| Get an allocated array_type::tensor to store a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
template<size_t rank = 0, class R > |
auto | allocate_qtensor (R val) const |
| Get an allocated and initialised array_type::tensor to store a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
template<class R > |
auto | allocate_qtensor (size_t rank) const |
| Get an allocated xt::xarray to store a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
template<class R > |
auto | allocate_qtensor (size_t rank, R val) const |
| Get an allocated and initialised xt::xarray to store a "qtensor" of a certain rank (0 = scalar, 1, vector, 2 = 2nd-order tensor, etc.).
|
|
template<class R > |
auto | allocate_qscalar () const |
| Get an allocated array_type::tensor to store a "qscalar" (a "qtensor" of rank 0).
|
|
template<class R > |
auto | allocate_qscalar (R val) const |
| Get an allocated and initialised xt::xarray to store a "qscalar" (a "qtensor" of rank 0).
|
|
template<
class D>
class GooseFEM::Element::QuadratureBaseCartesian< D >
CRTP base class for interpolation and quadrature for a generic element in Cartesian coordinates.
Naming convention:
elemmat
: matrices stored per element, [nelem, nne * ndim, nne * ndim]
elemvec
: nodal vectors stored per element, [nelem, nne, ndim]
qtensor
: integration point tensor, [nelem, nip, tdim, tdim]
qscalar
: integration point scalar, [nelem, nip]
Definition at line 546 of file Element.h.