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>
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()
|
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
-
U parametric coordinate in volume V parametric coordinate in volume W parametric coordinate in volume Qi Return result of N'*F here, maybe with offset block_offset detJ Return det[J] here F Input F vector, size is = n.field coords. state_x if != 0, update state (pos. part) to this, then evaluate Q state_w if != 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()
|
pure virtual |
This can be useful for loadable objects that has some density property, so it can be accessed by ChLoaderVolumeGravity.
Return 0 if the element/nodes does not support xyz gravity.
Implemented in chrono::fea::ChElementShellReissner4, chrono::fea::ChElementShellBST, chrono::fea::ChElementShellANCF_3833, chrono::fea::ChElementShellANCF_3423, chrono::fea::ChElementTetraCorot_4_P, chrono::fea::ChElementShellANCF_3443, chrono::fea::ChElementBeamIGA, chrono::fea::ChElementBeamTaperedTimoshenko, chrono::fea::ChElementHexaANCF_3843, chrono::fea::ChElementBeamANCF_3333, chrono::fea::ChElementBeamANCF_3243, 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::ChElementHexaANCF_3813, and chrono::ChNodeXYZ.
The documentation for this class was generated from the following file:
- /builds/uwsbel/chrono/src/chrono/physics/ChLoadable.h