Defines a three-dimensional 8-node hexahedral finite element using Q1-isoparametric interpolation. More...

#include <Hexa8.h>

Inheritance diagram for Hexa8:
FEShape

Public Member Functions

 Hexa8 ()
 Default Constructor.
 
 Hexa8 (const Element *el)
 Constructor when data of Element el are given.
 
 ~Hexa8 ()
 Destructor.
 
void setLocal (const Point< real_t > &s)
 Initialize local point coordinates in element.
 
void atGauss (int n, std::vector< Point< real_t > > &dsh, std::vector< real_t > &w)
 Calculate shape function derivatives and integration weights.
 
void atGauss (int n, std::vector< real_t > &sh, std::vector< real_t > &w)
 Calculate shape functions and integration weights.
 
real_t getMaxEdgeLength () const
 Return maximal edge length.
 
real_t getMinEdgeLength () const
 Return minimal edge length.
 
Point< real_t > Grad (const LocalVect< real_t, 8 > &u, const Point< real_t > &s)
 Return gradient of a function defined at element nodes.
 
- Public Member Functions inherited from FEShape
 FEShape ()
 Default Constructor.
 
 FEShape (const Element *el)
 Constructor for an element.
 
 FEShape (const Side *sd)
 Constructor for a side.
 
virtual ~FEShape ()
 Destructor.
 
real_t Sh (size_t i) const
 Return shape function of node i at given point.
 
real_t Sh (size_t i, Point< real_t > s) const
 Calculate shape function of node i at a given point s.
 
real_t getDet () const
 Return determinant of jacobian.
 
Point< real_t > getCenter () const
 Return coordinates of center of element.
 
Point< real_t > getLocalPoint () const
 Localize a point in the element.
 
Point< real_t > getLocalPoint (const Point< real_t > &s) const
 Localize a point in the element.
 

Detailed Description

Defines a three-dimensional 8-node hexahedral finite element using Q1-isoparametric interpolation.

The reference element is the cube [-1,1]x[-1,1]x[-1,1]. The user must take care to the fact that determinant of jacobian and other quantities depend on the point in the reference element where they are calculated. For this, before any utilization of shape functions or jacobian, function getLocal(s) must be invoked.

Author
Rachid Touzani

Member Function Documentation

◆ atGauss() [1/2]

void atGauss ( int  n,
std::vector< Point< real_t > > &  dsh,
std::vector< real_t > &  w 
)

Calculate shape function derivatives and integration weights.

Parameters
[in]nNumber of Gauss-Legendre integration points in each direction
[in]dshVector of shape function derivatives at the Gauss points
[in]wWeights of integration formula at Gauss points

◆ atGauss() [2/2]

void atGauss ( int  n,
std::vector< real_t > &  sh,
std::vector< real_t > &  w 
)

Calculate shape functions and integration weights.

Parameters
[in]nNumber of Gauss-Legendre integration points in each direction
[in]shVector of shape functions at the Gauss points
[in]wWeights of integration formula at Gauss points

◆ Grad()

Point< real_t > Grad ( const LocalVect< real_t, 8 > &  u,
const Point< real_t > &  s 
)

Return gradient of a function defined at element nodes.

Parameters
[in]uVector of values at nodes
[in]sLocal coordinates (in [-1,1]*[-1,1]*[-1,1]) of point where the gradient is evaluated
Returns
Value of gradient
Note
If the derivatives of shape functions were not computed before calling this function (by calling setLocal), this function will compute them

◆ setLocal()

void setLocal ( const Point< real_t > &  s)

Initialize local point coordinates in element.

Parameters
[in]sPoint in the reference element This function computes jacobian, shape functions and their partial derivatives at s. Other member functions only return these values.