GooseFEM 1.4.1.dev2+g78f16df
Loading...
Searching...
No Matches
GooseFEM::Element::Hex8::Quadrature Class Reference

Interpolation and quadrature. More...

#include <GooseFEM/ElementHex8.h>

Inheritance diagram for GooseFEM::Element::Hex8::Quadrature:
GooseFEM::Element::QuadratureBaseCartesian< Quadrature > GooseFEM::Element::QuadratureBase< D >

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).
 

Detailed Description

Interpolation and quadrature.

Fixed dimensions:

  • ndim = 3: number of dimensions.
  • nne = 8: number of nodes per element.

Naming convention:

Definition at line 215 of file ElementHex8.h.

Constructor & Destructor Documentation

◆ Quadrature() [1/2]

template<class T >
GooseFEM::Element::Hex8::Quadrature::Quadrature ( const T & x)
inline

Constructor: use default Gauss integration.

The following is pre-computed during construction:

  • the shape functions,
  • the shape function gradients (in local and global) coordinates,
  • the integration points volumes. They can be reused without any cost. They only have to be recomputed when the nodal position changes (note that they are assumed to be constant under a small-strain assumption). In that case use update_x() to update the nodal positions and to recompute the above listed quantities.
Parameters
xnodal coordinates (elemvec).

Definition at line 234 of file ElementHex8.h.

◆ Quadrature() [2/2]

template<class T , class X , class W >
GooseFEM::Element::Hex8::Quadrature::Quadrature ( const T & x,
const X & xi,
const W & w )
inline

Constructor with custom integration.

The following is pre-computed during construction:

  • the shape functions,
  • the shape function gradients (in local and global) coordinates,
  • the integration points volumes. They can be reused without any cost. They only have to be recomputed when the nodal position changes (note that they are assumed to be constant under a small-strain assumption). In that case use update_x() to update the nodal positions and to recompute the above listed quantities.
Parameters
xnodal coordinates (elemvec).
xiIntegration point coordinates (local coordinates) [nip].
wIntegration point weights [nip].

Definition at line 255 of file ElementHex8.h.


The documentation for this class was generated from the following file: