chrono::fea::ChTetrahedronFace Class Reference

Description

Face of a tetrahedron-shaped element.

The face is identified by the number of the vertex to which it is opposed: 0,1,2,3. Corner nodes, obtainable with GetNode(), are in counterclockwise order seen from the outside.

#include <ChTetrahedronFace.h>

Inheritance diagram for chrono::fea::ChTetrahedronFace:
Collaboration diagram for chrono::fea::ChTetrahedronFace:

Public Member Functions

 ChTetrahedronFace (std::shared_ptr< ChElementTetrahedron > element, char id)
 Construct the specified face (0 <= id <= 3) on the given tetrahedral element.
 
std::shared_ptr< ChNodeFEAxyzGetNode (unsigned int i) const
 
void ShapeFunctions (ChVectorN< double, 3 > &N, double r, double s)
 Fills the N shape function vector (size 3) with the values of shape functions at r,s 'area' coordinates, all ranging in [0...1].
 
virtual unsigned int GetLoadableNumCoordsPosLevel () override
 Get the number of DOFs affected by this element (position part).
 
virtual unsigned int GetLoadableNumCoordsVelLevel () override
 Get the number of DOFs affected by this element (speed part).
 
virtual void LoadableGetStateBlockPosLevel (int block_offset, ChState &mD) override
 Get all the DOFs packed in a single vector (position part).
 
virtual void LoadableGetStateBlockVelLevel (int block_offset, ChStateDelta &mD) override
 Get all the DOFs packed in a single vector (speed part).
 
virtual void LoadableStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) override
 Increment all DOFs using a delta.
 
virtual unsigned int GetNumFieldCoords () override
 Number of coordinates in the interpolated field: here the {x,y,z} displacement.
 
virtual unsigned int GetNumSubBlocks () override
 Get the number of DOFs sub-blocks.
 
virtual unsigned int GetSubBlockOffset (unsigned int nblock) override
 Get the offset of the specified sub-block of DOFs in global vector.
 
virtual unsigned int GetSubBlockSize (unsigned int nblock) override
 Get the size of the specified sub-block of DOFs in global vector.
 
virtual bool IsSubBlockActive (unsigned int nblock) const override
 Check if the specified sub-block of DOFs is active.
 
virtual void LoadableGetVariables (std::vector< ChVariables * > &mvars) override
 Get the pointers to the contained ChVariables, appending to the mvars vector.
 
virtual void ComputeNF (const double U, const double V, ChVectorDynamic<> &Qi, double &detJ, const ChVectorDynamic<> &F, ChVectorDynamic<> *state_x, ChVectorDynamic<> *state_w) override
 Evaluate N'*F , where N is some type of shape function evaluated at U,V coordinates of the surface, each ranging in 0..+1 F is a load, N'*F is the resulting generalized load. More...
 
virtual bool IsTriangleIntegrationNeeded () override
 If true, use quadrature over u,v in [0..1] range as triangle volumetric coords.
 
virtual ChVector3d ComputeNormal (const double U, const double V) override
 Get the normal to the surface at the parametric coordinate u,v. More...
 

Member Function Documentation

◆ ComputeNF()

virtual void chrono::fea::ChTetrahedronFace::ComputeNF ( const double  U,
const double  V,
ChVectorDynamic<> &  Qi,
double &  detJ,
const ChVectorDynamic<> &  F,
ChVectorDynamic<> *  state_x,
ChVectorDynamic<> *  state_w 
)
inlineoverridevirtual

Evaluate N'*F , where N is some type of shape function evaluated at U,V coordinates of the surface, each ranging in 0..+1 F is a load, N'*F is the resulting generalized load.

Returns also det[J] with J=[dx/du,..], which may be useful in Gauss quadrature.

Parameters
Uparametric coordinate in surface
Vparametric coordinate in surface
Qiresult of N'*F , maybe with offset block_offset
detJdet[J]
FInput F vector, size is = n.field coords.
state_xif != 0, update state (pos. part) to this, then evaluate Q
state_wif != 0, update state (speed part) to this, then evaluate Q

Implements chrono::ChLoadableUV.

◆ ComputeNormal()

virtual ChVector3d chrono::fea::ChTetrahedronFace::ComputeNormal ( const double  U,
const double  V 
)
inlineoverridevirtual

Get the normal to the surface at the parametric coordinate u,v.

Normal must be considered pointing outside in case the surface is a boundary to a volume.

Implements chrono::ChLoadableUV.


The documentation for this class was generated from the following file:
  • /builds/uwsbel/chrono/src/chrono/fea/ChTetrahedronFace.h