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 > otherSortedSphMarkersD, std::shared_ptr< ProximityDataD > otherMarkersProximityD, std::shared_ptr< FsiGeneralData > otherFsiGeneralData, std::shared_ptr< SimParams > otherParamsH, std::shared_ptr< ChCounters > otherNumObjects, bool verb)
 Constructor of the ChBce class. More...
 
 ~ChBce ()
 Destructor of the ChBce class.
 
void UpdateRigidMarkersPositionVelocity (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiBodiesDataD > fsiBodiesD)
 Updates the position and velocity of the particles on the rigid bodies based on the state of the body.
 
void UpdateFlexMarkersPositionVelocity (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiMeshDataD > fsiMeshD)
 Updates the position and velocity of the particles on the flexible bodies based on the state of the body.
 
void Rigid_Forces_Torques (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiBodiesDataD > fsiBodiesD)
 Calculates the forces from the fluid/granular dynamics system to the FSI system on rigid bodies.
 
void Flex_Forces (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiMeshDataD > fsiMeshD)
 Calculates the forces from the fluid/granular dynamics system to the FSI system on flexible bodies.
 
void ModifyBceVelocity (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiBodiesDataD > fsiBodiesD)
 Modify the velocity of BCE particles according to the SPH particles around.
 
void Populate_RigidSPH_MeshPos_LRF (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiBodiesDataD > fsiBodiesD, std::vector< int > fsiBodyBceNum)
 Populates the BCE particles on the rigid bodies at the initial configuration of the system. More...
 
void Populate_FlexSPH_MeshPos_LRF (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiMeshDataD > fsiMeshD, std::vector< int > fsiShellBceNum, std::vector< int > fsiCableBceNum)
 Populates the BCE particles on the flexible bodies at the initial configuration of the system. More...
 
void Initialize (std::shared_ptr< SphMarkerDataD > sphMarkersD, std::shared_ptr< FsiBodiesDataD > fsiBodiesD, std::shared_ptr< FsiMeshDataD > fsiMeshD, std::vector< int > fsiBodyBceNum, std::vector< int > fsiShellBceNum, std::vector< int > fsiCableBceNum)
 Complete construction of the BCE at the intial configuration of the system.
 
- Public Member Functions inherited from chrono::fsi::ChFsiGeneral
 ChFsiGeneral (std::shared_ptr< SimParams > hostParams, std::shared_ptr< ChCounters > hostNumObjects)
 Constructor for the ChFsiGeneral class. More...
 
virtual ~ChFsiGeneral ()
 Destructor of the ChFsiGeneral class.
 
void computeGridSize (uint n, uint blockSize, uint &numBlocks, uint &numThreads)
 Compute number of blocks and threads for calculation on GPU. More...
 

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.
 

Additional Inherited Members

- Protected Member Functions inherited from chrono::fsi::ChFsiGeneral
uint iDivUp (uint a, uint b)
 Return a/b or a/b + 1.
 

Constructor & Destructor Documentation

◆ ChBce()

chrono::fsi::ChBce::ChBce ( std::shared_ptr< SphMarkerDataD otherSortedSphMarkersD,
std::shared_ptr< ProximityDataD otherMarkersProximityD,
std::shared_ptr< FsiGeneralData otherFsiGeneralData,
std::shared_ptr< SimParams otherParamsH,
std::shared_ptr< ChCounters otherNumObjects,
bool  verb 
)

Constructor of the ChBce class.

Parameters
otherSortedSphMarkersDdata for SPH particles
otherMarkersProximityDinformation for neighbor search
otherFsiGeneralDatageneral information, e.g, ordering of the phases
otherParamsHsimulation parameters
otherNumObjectsnumber of sph particles on each phase
verbverbose terminal output

Member Function Documentation

◆ Populate_FlexSPH_MeshPos_LRF()

void chrono::fsi::ChBce::Populate_FlexSPH_MeshPos_LRF ( std::shared_ptr< SphMarkerDataD sphMarkersD,
std::shared_ptr< FsiMeshDataD fsiMeshD,
std::vector< int >  fsiShellBceNum,
std::vector< int >  fsiCableBceNum 
)

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

The local coordinates w.r.t to the coordinate system of the flexible 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.

◆ Populate_RigidSPH_MeshPos_LRF()

void chrono::fsi::ChBce::Populate_RigidSPH_MeshPos_LRF ( std::shared_ptr< SphMarkerDataD sphMarkersD,
std::shared_ptr< FsiBodiesDataD fsiBodiesD,
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