|
GooseFEM 1.4.1.dev2+g78f16df
|
Interpolation and quadrature. More...
#include <GooseFEM/ElementHex8.h>
Public Member Functions | |
| template<class T > | |
| Quadrature (const T &x) | |
| Constructor: use default Gauss integration. | |
| template<class T , class X , class W > | |
| Quadrature (const T &x, const X &xi, const W &w) | |
| Constructor with custom integration. | |
Public Member Functions inherited from GooseFEM::Element::QuadratureBaseCartesian< Quadrature > | |
| 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. | |
| auto | InterpQuad_vector (const T &elemvec) const -> array_type::tensor< double, 3 > |
| Interpolate element vector and evaluate at each quadrature point. | |
| void | interpQuad_vector (const T &elemvec, R &qvector) const |
| Same as InterpQuad_vector(), but writing to preallocated return. | |
| 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. | |
| void | gradN_vector (const T &elemvec, R &qtensor) const |
| Same as GradN_vector(), but writing to preallocated return. | |
| auto | GradN_vector_T (const T &elemvec) const -> array_type::tensor< double, 4 > |
| The transposed output of GradN_vector(). | |
| void | gradN_vector_T (const T &elemvec, R &qtensor) const |
| Same as GradN_vector_T(), but writing to preallocated return. | |
| auto | SymGradN_vector (const T &elemvec) const -> array_type::tensor< double, 4 > |
| The symmetric output of GradN_vector(). | |
| void | symGradN_vector (const T &elemvec, R &qtensor) const |
| Same as SymGradN_vector(), but writing to preallocated return. | |
| auto | Int_N_vector_dV (const T &qvector) const -> array_type::tensor< double, 3 > |
| Element-by-element: integral of a continuous vector-field. | |
| void | int_N_vector_dV (const T &qvector, R &elemvec) const |
| Same as Int_N_vector_dV(), but writing to preallocated return. | |
| 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. | |
| void | int_N_scalar_NT_dV (const T &qscalar, R &elemmat) const |
| Same as Int_N_scalar_NT_dV(), but writing to preallocated return. | |
| 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. | |
| void | int_gradN_dot_tensor2_dV (const T &qtensor, R &elemvec) const |
| Same as Int_gradN_dot_tensor2_dV(), but writing to preallocated return. | |
| 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. | |
| 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. | |
Public Member Functions inherited from GooseFEM::Element::QuadratureBase< D > | |
| 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). | |
Additional Inherited Members | |
Public Types inherited from GooseFEM::Element::QuadratureBaseCartesian< Quadrature > | |
| using | derived_type |
| Underlying type. | |
Public Types inherited from GooseFEM::Element::QuadratureBase< D > | |
| using | derived_type = D |
| Underlying type. | |
Protected Member Functions inherited from GooseFEM::Element::QuadratureBaseCartesian< Quadrature > | |
| void | compute_dN () |
| Update the shape function gradients (called when the nodal positions are updated). | |
Interpolation and quadrature.
Fixed dimensions:
ndim = 3: number of dimensions.nne = 8: number of nodes per element.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, ndim, ndim]qscalar: integration point scalar, [nelem, nip] Definition at line 215 of file ElementHex8.h.
Constructor: use default Gauss integration.
The following is pre-computed during construction:
| x | nodal coordinates (elemvec). |
Definition at line 234 of file ElementHex8.h.
Constructor with custom integration.
The following is pre-computed during construction:
| x | nodal coordinates (elemvec). |
| xi | Integration point coordinates (local coordinates) [nip]. |
| w | Integration point weights [nip]. |
Definition at line 255 of file ElementHex8.h.