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], except if IsTetrahedronIntegrationNeeded() true or IsTrianglePrismIntegrationNeeded() true. 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 default quadrature over u,v,w in [-1..+1] as box isoparametric coords.
 
virtual bool IsTrianglePrismIntegrationNeeded ()
 If true, use quadrature over u,v in [0..1] range as triangle natural coords (with z=1-u-v), and use linear quadrature over w in [-1..+1], otherwise use default quadrature over u,v,w in [-1..+1] as box isoparametric coords.
 
- 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 (e.g., 3 for a tetrahedron, 1 for a thermal problem, etc.).
 
virtual int GetSubBlocks ()=0
 Get the number of DOFs sub-blocks (e.g., 1 for a body, 4 for a tetrahedron, etc.).
 
virtual unsigned int GetSubBlockOffset (int nblock)=0
 Get the offset of the specified sub-block of DOFs in global vector.
 
virtual unsigned int GetSubBlockSize (int nblock)=0
 Get the size of the specified sub-block of DOFs in global vector.
 
virtual bool IsSubBlockActive (int nblock) const =0
 Check if the specified sub-block of DOFs is active.
 
virtual void LoadableGetVariables (std::vector< ChVariables * > &mvars)=0
 Get the pointers to the contained ChVariables, appending to the mvars vector.
 

Member Function Documentation

◆ ComputeNF()

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], except if IsTetrahedronIntegrationNeeded() true or IsTrianglePrismIntegrationNeeded() true.

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::ChElementShellANCF_3833, chrono::fea::ChElementShellANCF_3443, chrono::fea::ChElementHexaANCF_3843, chrono::fea::ChElementBeamANCF_3333, chrono::fea::ChElementBeamANCF_3243, chrono::fea::ChElementShellReissner4, chrono::ChBody, chrono::fea::ChElementShellBST, chrono::fea::ChElementShellANCF_3423, chrono::fea::ChElementTetraCorot_4_P, chrono::fea::ChElementBeamIGA, chrono::fea::ChElementBeamTaperedTimoshenko, chrono::fea::ChElementBeamEuler, chrono::fea::ChElementCableANCF, chrono::fea::ChElementHexaANCF_3813_9, chrono::fea::ChElementHexaCorot_20, chrono::fea::ChElementHexaCorot_8, chrono::fea::ChElementTetraCorot_10, chrono::fea::ChNodeFEAxyzrot, chrono::fea::ChElementTetraCorot_4, chrono::fea::ChNodeFEAxyzDDD, chrono::fea::ChNodeFEAxyzDD, chrono::fea::ChNodeFEAxyzD, chrono::fea::ChElementHexaANCF_3813, chrono::fea::ChElementBeamTaperedTimoshenkoFPM, and chrono::ChNodeXYZ.

◆ GetDensity()


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