chrono::fea::ChFieldElementLoadableSurface Class Reference

Description

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

This is used to apply UV loads of ChLoaderUVdistributed type, like pressure (for problems where the field is displacement), heat flux (for problems where the field is temperature), etc.

#include <ChFieldElementLoadableSurface.h>

Inheritance diagram for chrono::fea::ChFieldElementLoadableSurface:
Collaboration diagram for chrono::fea::ChFieldElementLoadableSurface:

Public Member Functions

 ChFieldElementLoadableSurface (std::shared_ptr< ChFieldElementSurface > element, std::shared_ptr< ChFieldBase > field)
 Construct a loadable surface the given a surface element (ex. More...
 
virtual void SetElement (std::shared_ptr< ChFieldElementSurface > element)
 Set the element to wrap as loadable.
 
virtual std::shared_ptr< ChFieldElementSurfaceGetElement () const
 Get the wrapped element.
 
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, 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 bool IsTriangleIntegrationNeeded () override
 If true, use quadrature over u,v in [0..1] range as triangle coords.
 
virtual ChVector3d ComputeNormal (const double U, const double V) override
 Gets the normal to the surface at the parametric coordinate u,v. More...
 

Constructor & Destructor Documentation

◆ ChFieldElementLoadableSurface()

chrono::fea::ChFieldElementLoadableSurface::ChFieldElementLoadableSurface ( std::shared_ptr< ChFieldElementSurface element,
std::shared_ptr< ChFieldBase field 
)
inline

Construct a loadable surface the given a surface element (ex.

a ChFieldElementTetrahedron4Face) and a field. For example if the field is ChFieldTemperature, this can be used to receive a surface heat flux loader. If the field is ChFieldDisplacement, this can receive pressure loaders, etc.

Member Function Documentation

◆ ComputeNF()

void chrono::fea::fea::ChFieldElementLoadableSurface::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 -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
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::ChLoadableUV.

◆ ComputeNormal()

virtual ChVector3d chrono::fea::ChFieldElementLoadableSurface::ComputeNormal ( const double  U,
const double  V 
)
inlineoverridevirtual

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.


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