chrono::fea::ChFieldElementLoadableVolume Class Reference

Description

Loadable volume of an element, with reference to some interpolated field.

This is used to apply UVW loads of ChLoaderUVWdistributed type, like gravity

#include <ChFieldElementLoadableVolume.h>

Inheritance diagram for chrono::fea::ChFieldElementLoadableVolume:
Collaboration diagram for chrono::fea::ChFieldElementLoadableVolume:

Public Member Functions

 ChFieldElementLoadableVolume (std::shared_ptr< ChFieldElementVolume > element, std::shared_ptr< ChFieldBase > field)
 Construct a loadable volume the given solid finite element and a field. More...
 
virtual void SetElement (std::shared_ptr< ChFieldElementVolume > element)
 Set the element to wrap as loadable.
 
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.
 
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, const double W, 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 -1..+1 F is a load, N'*F is the resulting generalized load. More...
 
virtual double GetDensity () override
 This has no density - it requires a ChMaterial etc.
 
virtual bool IsTetrahedronIntegrationNeeded () override
 If true, use quadrature over u,v in [0..1] range as triangle volumetric coords.
 
virtual bool IsTrianglePrismIntegrationNeeded () override
 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.
 

Constructor & Destructor Documentation

◆ ChFieldElementLoadableVolume()

chrono::fea::ChFieldElementLoadableVolume::ChFieldElementLoadableVolume ( std::shared_ptr< ChFieldElementVolume element,
std::shared_ptr< ChFieldBase field 
)
inline

Construct a loadable volume the given solid finite element and a field.

For example if the field is ChFieldTemperature, this can be used to receive a volumetric heat source. If the field is ChFieldDisplacement, this can receive gravity, etc.

Member Function Documentation

◆ ComputeNF()

void chrono::fea::fea::ChFieldElementLoadableVolume::ComputeNF ( const double  U,
const double  V,
const double  W,
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 -1..+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
Wparametric 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::ChLoadableUVW.


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