chrono::fea::ChFaceTetra_4 Class Reference

Description

Face of a linear ChElementTetra_4 tetrahedron.

This is a proxy to the tetrahedron. It can be used to apply pressure loads. Note, face_id is the number of the vertex to whom it is opposed: 0,1,2,3. Corner nodes, obtainable with GetNodeN(), are in counterclockwise order seen from the outside.

#include <ChFaceTetra_4.h>

Inheritance diagram for chrono::fea::ChFaceTetra_4:
Collaboration diagram for chrono::fea::ChFaceTetra_4:

Public Member Functions

 ChFaceTetra_4 (std::shared_ptr< ChElementTetra_4 > mel, char mid)
 
std::shared_ptr< ChNodeFEAxyzGetNodeN (int i)
 
virtual void ShapeFunctions (ChMatrix<> &N, double r, double s)
 Fills the N shape function matrix (1 row, 3 columns) with the values of shape functions at r,s 'area' coordinates, all ranging in [0...1]. More...
 
virtual int LoadableGet_ndof_x () override
 Gets the number of DOFs affected by this element (position part)
 
virtual int LoadableGet_ndof_w () override
 Gets the number of DOFs affected by this element (speed part)
 
virtual void LoadableGetStateBlock_x (int block_offset, ChState &mD) override
 Gets all the DOFs packed in a single vector (position part)
 
virtual void LoadableGetStateBlock_w (int block_offset, ChStateDelta &mD) override
 Gets 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 int Get_field_ncoords () override
 Number of coordinates in the interpolated field: here the {x,y,z} displacement.
 
virtual int GetSubBlocks () override
 Tell the number of DOFs blocks (ex. =1 for a body, =4 for a tetrahedron, etc.)
 
virtual unsigned int GetSubBlockOffset (int nblock) override
 Get the offset of the i-th sub-block of DOFs in global vector.
 
virtual unsigned int GetSubBlockSize (int nblock) override
 Get the size of the i-th sub-block of DOFs in global vector.
 
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 Returns also det[J] with J=[dx/du,..], that might be useful in gauss quadrature. More...
 
virtual bool IsTriangleIntegrationNeeded () override
 If true, use quadrature over u,v in [0..1] range as triangle volumetric coords.
 
virtual ChVector ComputeNormal (const double U, const double V) override
 Gets the normal to the surface at the parametric coordinate u,v. More...
 

Protected Attributes

char face_id
 
std::shared_ptr< ChElementTetra_4melement
 

Member Function Documentation

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

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,..], that might be useful in gauss quadrature.

Parameters
Uparametric coordinate in surface
Vparametric coordinate in surface
QiReturn result of N'*F here, maybe with offset block_offset
detJReturn det[J] here
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.

virtual ChVector chrono::fea::ChFaceTetra_4::ComputeNormal ( const double  U,
const double  V 
)
overridevirtual

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

virtual void chrono::fea::ChFaceTetra_4::ShapeFunctions ( ChMatrix<> &  N,
double  r,
double  s 
)
virtual

Fills the N shape function matrix (1 row, 3 columns) with the values of shape functions at r,s 'area' coordinates, all ranging in [0...1].