chrono::ChLoadableUVW Class Referenceabstract

Description

Interface for objects that can be subject to volume loads, distributed along UVW coordinates of the object.

For instance finite elements like 3D bricks, ex.for gravitational loads.

#include <ChLoadable.h>

Inheritance diagram for chrono::ChLoadableUVW:
Collaboration diagram for chrono::ChLoadableUVW:

Public Member Functions

virtual void ComputeNF (const double U, const double V, const double W, ChVectorDynamic<> &Qi, double &detJ, const ChVectorDynamic<> &F, ChVectorDynamic<> *state_x, ChVectorDynamic<> *state_w)=0
 Evaluate N'*F , where N is some type of shape function evaluated at U,V,W coordinates of the volume, each ranging in -1..+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 double GetDensity ()=0
 This can be useful for loadable objects that has some density property, so it can be accessed by ChLoaderVolumeGravity. More...
 
virtual bool IsTetrahedronIntegrationNeeded ()
 If true, use quadrature over u,v,w in [0..1] range as tetrahedron volumetric coords, with z=1-u-v-w otherwise use quadrature over u,v,w in [-1..+1] as box isoparametric coords. More...
 
- Public Member Functions inherited from chrono::ChLoadable
virtual int LoadableGet_ndof_x ()=0
 Gets the number of DOFs affected by this element (position part)
 
virtual int LoadableGet_ndof_w ()=0
 Gets the number of DOFs affected by this element (speed part)
 
virtual void LoadableGetStateBlock_x (int block_offset, ChState &mD)=0
 Gets all the DOFs packed in a single vector (position part)
 
virtual void LoadableGetStateBlock_w (int block_offset, ChStateDelta &mD)=0
 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)=0
 Increment all DOFs using a delta. More...
 
virtual int Get_field_ncoords ()=0
 Number of coordinates in the interpolated field, ex=3 for a tetrahedron finite element or a cable, = 1 for a thermal problem, etc. More...
 
virtual int GetSubBlocks ()=0
 Tell the number of DOFs blocks (ex. =1 for a body, =4 for a tetrahedron, etc.)
 
virtual unsigned int GetSubBlockOffset (int nblock)=0
 Get the offset of the i-th sub-block of DOFs in global vector.
 
virtual unsigned int GetSubBlockSize (int nblock)=0
 Get the size of the i-th sub-block of DOFs in global vector.
 
virtual void LoadableGetVariables (std::vector< ChVariables * > &mvars)=0
 Get the pointers to the contained ChVariables, appending to the mvars vector.
 

Member Function Documentation

virtual void chrono::ChLoadableUVW::ComputeNF ( const double  U,
const double  V,
const double  W,
ChVectorDynamic<> &  Qi,
double &  detJ,
const ChVectorDynamic<> &  F,
ChVectorDynamic<> *  state_x,
ChVectorDynamic<> *  state_w 
)
pure virtual

Evaluate N'*F , where N is some type of shape function evaluated at U,V,W coordinates of the volume, each ranging in -1..+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 volume
Vparametric coordinate in volume
Wparametric coordinate in volume
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

Implemented in chrono::fea::ChElementBeamEuler, chrono::fea::ChElementCableANCF, chrono::fea::ChElementHexa_20, chrono::fea::ChElementTetra_4_P, chrono::ChBody, chrono::fea::ChElementTetra_10, chrono::fea::ChElementHexa_8, chrono::fea::ChElementShellReissner4, chrono::fea::ChElementTetra_4, chrono::fea::ChElementShellANCF, chrono::fea::ChElementBrick, chrono::fea::ChElementBeamANCF, chrono::fea::ChElementBrick_9, chrono::fea::ChNodeFEAxyzDD, chrono::fea::ChNodeFEAxyzD, and chrono::ChNodeXYZ.

virtual double chrono::ChLoadableUVW::GetDensity ( )
pure virtual
virtual bool chrono::ChLoadableUVW::IsTetrahedronIntegrationNeeded ( )
virtual

If true, use quadrature over u,v,w in [0..1] range as tetrahedron volumetric coords, with z=1-u-v-w otherwise use quadrature over u,v,w in [-1..+1] as box isoparametric coords.

Reimplemented in chrono::fea::ChElementTetra_4_P, chrono::fea::ChElementTetra_10, and chrono::fea::ChElementTetra_4.