Description

Base class for processing boundary condition enforcing (BCE) particle forces in an FSI system.

This class handles the Fluid-Solid Interaction by enforcing i) forces from the fluid/granular dynamics system to the MBD system, and ii) displacement from the MBD system to the fluid dynamics system.

Inheritance diagram for chrono::fsi::ChBce:
Collaboration diagram for chrono::fsi::ChBce:

Public Member Functions

 ChBce (std::shared_ptr< SphMarkerDataD > sortedSphMarkers_D, std::shared_ptr< ProximityDataD > markersProximity_D, std::shared_ptr< FsiData > fsiData, std::shared_ptr< SimParams > paramsH, std::shared_ptr< ChCounters > numObjects, bool verbose)
 Constructor of the ChBce class. More...
 
 ~ChBce ()
 Destructor of the ChBce class.
 
void UpdateBodyMarkerState (std::shared_ptr< FsiBodyStateD > fsiBodyState_D)
 Updates the position and velocity of the particles on the rigid bodies based on the state of the body.
 
void UpdateMeshMarker1DState (std::shared_ptr< FsiMeshStateD > fsiMesh1DState_D)
 Updates the position and velocity of the particles on the flexible solids based on the state of the mesh.
 
void UpdateMeshMarker2DState (std::shared_ptr< FsiMeshStateD > fsiMesh2DState_D)
 
void UpdateBodyMarkerStateInitial (std::shared_ptr< SphMarkerDataD > sphMarkers_D, std::shared_ptr< FsiBodyStateD > fsiBodyState_D)
 Updates the position and velocity of the particles on the rigid bodies based on the state of the body.
 
void UpdateMeshMarker1DStateInitial (std::shared_ptr< SphMarkerDataD > sphMarkers_D, std::shared_ptr< FsiMeshStateD > fsiMesh1DState_D)
 Updates the position and velocity of the particles on the flexible solids based on the state of the mesh.
 
void UpdateMeshMarker2DStateInitial (std::shared_ptr< SphMarkerDataD > sphMarkers_D, std::shared_ptr< FsiMeshStateD > fsiMesh2DState_D)
 
void Rigid_Forces_Torques (std::shared_ptr< FsiBodyStateD > fsiBodyState_D)
 Calculates the forces from the fluid/granular dynamics system to the FSI system on rigid bodies.
 
void Flex1D_Forces (std::shared_ptr< FsiMeshStateD > fsiMesh1DState_D)
 Calculates the forces from the fluid/granular dynamics system to the FSI system on flexible bodies.
 
void Flex2D_Forces (std::shared_ptr< FsiMeshStateD > fsiMesh2DState_D)
 
void CalcMeshMarker1DAcceleration (thrust::device_vector< Real3 > &bceAcc, std::shared_ptr< FsiMeshStateD > fsiMesh1DState_D)
 
void CalcMeshMarker2DAcceleration (thrust::device_vector< Real3 > &bceAcc, std::shared_ptr< FsiMeshStateD > fsiMesh2DState_D)
 
void updateBCEAcc (std::shared_ptr< FsiBodyStateD > fsiBodyState_D, std::shared_ptr< FsiMeshStateD > fsiMesh1DState_D, std::shared_ptr< FsiMeshStateD > fsiMesh2DState_D)
 
void Populate_RigidSPH_MeshPos_LRF (std::shared_ptr< SphMarkerDataD > sphMarkers_D, std::shared_ptr< FsiBodyStateD > fsiBodyState_D, std::vector< int > fsiBodyBceNum)
 Populates the BCE particles on the rigid bodies at the initial configuration of the system. More...
 
void Initialize (std::shared_ptr< SphMarkerDataD > sphMarkers_D, std::shared_ptr< FsiBodyStateD > fsiBodyState_D, std::shared_ptr< FsiMeshStateD > fsiMesh1DState_D, std::shared_ptr< FsiMeshStateD > fsiMesh2DState_D, std::vector< int > fsiBodyBceNum)
 Complete construction of the BCE at the intial configuration of the system.
 
- Public Member Functions inherited from chrono::fsi::ChFsiBase
 ChFsiBase (std::shared_ptr< SimParams > params, std::shared_ptr< ChCounters > numObjects)
 Constructor for the ChFsiBase class. More...
 
virtual ~ChFsiBase ()
 Destructor of the ChFsiBase class.
 

Public Attributes

thrust::device_vector< Real3 > velMas_ModifiedBCE
 Modified velocity information for BCE particles.
 
thrust::device_vector< Real4 > rhoPreMu_ModifiedBCE
 Modified density, pressure information for BCE particles.
 
thrust::device_vector< Real3 > tauXxYyZz_ModifiedBCE
 Modified stress tensor for BCE particles, diagonal entries.
 
thrust::device_vector< Real3 > tauXyXzYz_ModifiedBCE
 Modified stress tensor for BCE particles, non-diagonal entries.
 

Additional Inherited Members

- Static Public Member Functions inherited from chrono::fsi::ChFsiBase
static void computeGridSize (uint n, uint blockSize, uint &numBlocks, uint &numThreads)
 Compute number of blocks and threads for calculation on GPU. More...
 
- Protected Attributes inherited from chrono::fsi::ChFsiBase
std::shared_ptr< SimParamsparamsH
 simulation parameters (host)
 
std::shared_ptr< ChCountersnumObjectsH
 problem counters (host)
 

Constructor & Destructor Documentation

◆ ChBce()

chrono::fsi::ChBce::ChBce ( std::shared_ptr< SphMarkerDataD sortedSphMarkers_D,
std::shared_ptr< ProximityDataD markersProximity_D,
std::shared_ptr< FsiData fsiData,
std::shared_ptr< SimParams paramsH,
std::shared_ptr< ChCounters numObjects,
bool  verbose 
)

Constructor of the ChBce class.

Parameters
sortedSphMarkers_Ddata for SPH particles
markersProximity_Dinformation for neighbor search
fsiDatageneral information, e.g, ordering of the phases
paramsHsimulation parameters
numObjectsnumber of sph particles on each phase
verboseverbose terminal output

Member Function Documentation

◆ Populate_RigidSPH_MeshPos_LRF()

void chrono::fsi::ChBce::Populate_RigidSPH_MeshPos_LRF ( std::shared_ptr< SphMarkerDataD sphMarkers_D,
std::shared_ptr< FsiBodyStateD fsiBodyState_D,
std::vector< int >  fsiBodyBceNum 
)

Populates the BCE particles on the rigid bodies at the initial configuration of the system.

The local coordinates w.r.t to the coordinate system of the rigid bodies is saved and is used during the update stage. In such a condition the position and orientation of the body is enough to update the position of all the particles attached to it.


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