File ElementQuad4Axisymmetric.h#
Quadrature for 4-noded quadrilateral element in 2d (GooseFEM::Mesh::ElementType::Quad4), in an axisymmetric coordinated system.
- Copyright
Copyright 2017. Tom de Geus. All rights reserved.
- License: This project is released under the GNU Public License (GPLv3).
-
namespace GooseFEM
Toolbox to perform finite element computations.
-
namespace Element
Element quadrature and interpolation.
-
namespace Quad4#
4-noded quadrilateral element in 2d (GooseFEM::Mesh::ElementType::Quad4).
-
class QuadratureAxisymmetric : public GooseFEM::Element::QuadratureBaseCartesian<QuadratureAxisymmetric>
- #include <GooseFEM/ElementQuad4Axisymmetric.h>
Interpolation and quadrature.
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]
Public Functions
-
QuadratureAxisymmetric() = default#
-
template<class T>
inline QuadratureAxisymmetric(const T &x) 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
x – nodal coordinates (
elemvec
).
-
template<class T, class X, class W>
inline QuadratureAxisymmetric(const T &x, const X &xi, const W &w) 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.
-
inline const array_type::tensor<double, 6> &B() const
Get the B-matrix (shape function gradients) (in global coordinates).
Note that the functions and their gradients are precomputed upon construction, or updated when calling update_x().
Private Functions
-
template<class T, class R>
inline void int_gradN_dot_tensor2_dV_impl(const T &qtensor, R &elemvec) const#
-
template<class T, class R>
inline void int_gradN_dot_tensor4_dot_gradNT_dV_impl(const T &qtensor, R &elemmat) const#
-
inline void compute_dN_impl()#
Private Members
- friend QuadratureBase< QuadratureAxisymmetric >
- friend QuadratureBaseCartesian< QuadratureAxisymmetric >
-
size_t m_tdim = 3#
Dynamic alias of s_tdim (remove in C++17)
-
size_t m_nelem#
Number of elements.
-
size_t m_nip#
Number of integration points per element.
-
array_type::tensor<double, 1> m_w#
weight per integration point [nip]
-
array_type::tensor<double, 2> m_xi#
-
array_type::tensor<double, 2> m_N#
-
array_type::tensor<double, 2> m_vol#
-
class QuadratureAxisymmetric : public GooseFEM::Element::QuadratureBaseCartesian<QuadratureAxisymmetric>
-
namespace Quad4#
-
namespace Element