GooseFEM 1.4.1.dev2+g78f16df
|
Interpolation and quadrature. More...
#include <GooseFEM/ElementQuad4Planar.h>
Public Member Functions | |
template<class T > | |
QuadraturePlanar (const T &x, double thick=1.0) | |
Constructor: use default Gauss integration. | |
template<class T , class X , class W > | |
QuadraturePlanar (const T &x, const X &xi, const W &w, double thick=1.0) | |
Constructor with custom integration. | |
![]() | |
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. | |
![]() | |
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 | |
![]() | |
using | derived_type |
Underlying type. | |
![]() | |
using | derived_type = D |
Underlying type. | |
![]() | |
void | compute_dN () |
Update the shape function gradients (called when the nodal positions are updated). | |
Interpolation and quadrature.
Similar to Element::Quad4::Quadrature with the only different that quadrature point tensors are 3d ("plane strain") while the mesh is 2d.
Fixed dimensions:
ndim = 2
: number of dimensions.tdim = 3
: number of dimensions or tensor.nne = 4
: 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, tdim, tdim]qscalar
: integration point scalar, [nelem, nip] Definition at line 38 of file ElementQuad4Planar.h.
|
inline |
Constructor: use default Gauss integration.
The following is pre-computed during construction:
x | nodal coordinates (elemvec ). |
thick | out-of-plane thickness (incorporated in the element volume). |
Definition at line 58 of file ElementQuad4Planar.h.
|
inline |
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]. |
thick | out-of-plane thickness (incorporated in the element volume). |
Definition at line 81 of file ElementQuad4Planar.h.