|
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. | |
Public Member Functions inherited from GooseFEM::Element::QuadratureBaseCartesian< QuadraturePlanar > | |
| 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< QuadraturePlanar > | |
| 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< QuadraturePlanar > | |
| 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.