chrono::fsi::sph::ChFsiSystemSPH Class Reference

Description

FSI system using an SPH-based fluid solver.

#include <ChFsiSystemSPH.h>

Inheritance diagram for chrono::fsi::sph::ChFsiSystemSPH:
Collaboration diagram for chrono::fsi::sph::ChFsiSystemSPH:

Public Member Functions

 ChFsiSystemSPH (ChSystem *sysMBS, ChFsiFluidSystemSPH *sysSPH, bool use_generic_interface=false)
 Construct an FSI system to couple the specified Chrono MBS system and SPH fluid system. More...
 
ChFsiFluidSystemSPHGetFluidSystemSPH () const
 Access the associated SPH fluid system.
 
std::shared_ptr< FsiBodyAddFsiBody (std::shared_ptr< ChBody > body, const std::vector< ChVector3d > &bce, const ChFrame<> &rel_frame, bool check_embedded)
 Add a rigid body to the FSI system with given set of BCE markers. More...
 
void SetActiveDomainBody (size_t i, const ChAABB &aabb)
 Set the active domain for the body with specified index (as returned by AddFsiBody). More...
 
void SetActiveDomainMesh1D (size_t i, const ChAABB &aabb)
 Set the active domain for the nodes of the 1D mesh with specified index (as returned by AddFsiMesh1D). More...
 
void SetActiveDomainMesh2D (size_t i, const ChAABB &aabb)
 Set the active domain for the nodes of the 2D mesh with specified index (as returned by AddFsiMesh2D). More...
 
void SetActiveDomain (const ChVector3d &box_dim)
 Set the active domain for all FSI solids (bodies and nodes) to an AABB of given dimensions, centered at the solid origin. More...
 
void AddFsiBoundary (const std::vector< ChVector3d > &bce, const ChFrame<> &rel_frame)
 Add a set of boundary BCE markers. More...
 
void SynchronizeDevice ()
 Utility function to synchronize device.
 
virtual void Initialize () override
 Initialize the FSI system. More...
 
std::shared_ptr< FsiBodyAddFsiBody (std::shared_ptr< ChBody > body, std::shared_ptr< ChBodyGeometry > geometry, bool check_embedded)
 Add a rigid body to the FSI system.
 
- Public Member Functions inherited from chrono::fsi::ChFsiSystem
virtual ~ChFsiSystem ()
 Destructor for the FSI system.
 
void AttachFluidSystem (ChFsiFluidSystem *sys)
 Attach a fluid system.
 
void AttachMultibodySystem (ChSystem *sys)
 Attach a MBS system.
 
ChFsiFluidSystemGetFluidSystem () const
 Access the associated fluid system.
 
ChSystemGetMultibodySystem () const
 Access the associated multibody system.
 
ChFsiInterfaceGetFsiInterface () const
 Access the associated FSI interface.
 
void SetVerbose (bool verbose)
 Enable/disable verbose terminal output (default: true). More...
 
void SetGravitationalAcceleration (const ChVector3d &gravity)
 Set gravitational acceleration for the FSI system. More...
 
void SetStepSizeCFD (double step)
 Set integration step size for fluid dynamics.
 
void SetStepsizeMBD (double step)
 Set integration step size for multibody dynamics. More...
 
std::shared_ptr< FsiBodyAddFsiBody (std::shared_ptr< ChBody > body, std::shared_ptr< ChBodyGeometry > geometry, bool check_embedded)
 Add a rigid body to the FSI system.
 
void RegisterMBDCallback (std::shared_ptr< MBDCallback > callback)
 Set a custom function for advancing the dynamics of the associated multibody system. More...
 
void DoStepDynamics (double step)
 Function to advance the FSI system combined state. More...
 
double GetSimTime () const
 Get current simulation time.
 
double GetStepSizeMBD () const
 Get the integration step size for multibody dynamics.
 
double GetStepSizeCFD () const
 Get the integration step size for fluid dynamics.
 
double GetRtf () const
 Get current estimated RTF (real time factor) for the coupled problem.
 
void SetRtf (double rtf)
 Set RTF value for the coupled problem. More...
 
double GetRtfCFD () const
 Get current estimated RTF (real time factor) for the fluid system.
 
double GetRtfMBD () const
 Get current estimated RTF (real time factor) for the multibody system.
 
double GetRatioMBD () const
 Get ratio of simulation time spent in MBS integration.
 
double GetTimerStep () const
 Return the time in seconds for for simulating the last step.
 
double GetTimerCFD () const
 Return the time in seconds for fluid dynamics over the last step.
 
double GetTimerMBD () const
 Return the time in seconds for multibody dynamics over the last step.
 
double GetTimerFSI () const
 Return the time in seconds for data exchange between phases over the last step.
 
const std::vector< std::shared_ptr< FsiBody > > & GetBodies () const
 Get a list of the FSI rigid bodies.
 
const ChVector3dGetFsiBodyForce (size_t i) const
 Return the FSI applied force on the body with specified index (as returned by AddFsiBody). More...
 
const ChVector3dGetFsiBodyTorque (size_t i) const
 Return the FSI applied torque on the body with specified index (as returned by AddFsiBody). More...
 

Additional Inherited Members

- Protected Member Functions inherited from chrono::fsi::ChFsiSystem
 ChFsiSystem (ChSystem *sysMBS, ChFsiFluidSystem *sysCFD)
 Construct an FSI system coupling the provided multibody and fluid systems. More...
 
- Protected Attributes inherited from chrono::fsi::ChFsiSystem
ChSystemm_sysMBS
 multibody system
 
ChFsiFluidSystemm_sysCFD
 FSI fluid solver.
 
std::shared_ptr< ChFsiInterfacem_fsi_interface
 FSI interface system.
 
bool m_verbose
 enable/disable m_verbose terminal output
 
bool m_is_initialized
 set to true once the Initialize function is called
 

Constructor & Destructor Documentation

◆ ChFsiSystemSPH()

chrono::fsi::sph::ChFsiSystemSPH::ChFsiSystemSPH ( ChSystem sysMBS,
ChFsiFluidSystemSPH sysSPH,
bool  use_generic_interface = false 
)

Construct an FSI system to couple the specified Chrono MBS system and SPH fluid system.

Data exchange between the tow systems is done through an FSI interface object, owned by the FSI system. If 'use_generic_interface = true', the FSI system will use a generic FSI interface. Otherwise (default), use a custom FSI interface which works directly with the data manager of the SPH fluid solver and thus circumvents additional data movement.

Member Function Documentation

◆ AddFsiBody()

std::shared_ptr< FsiBody > chrono::fsi::sph::ChFsiSystemSPH::AddFsiBody ( std::shared_ptr< ChBody body,
const std::vector< ChVector3d > &  bce,
const ChFrame<> &  rel_frame,
bool  check_embedded 
)

Add a rigid body to the FSI system with given set of BCE markers.

BCE marker points are assumed to be specified in the given frame (itself relative to the given body).

◆ AddFsiBoundary()

void chrono::fsi::sph::ChFsiSystemSPH::AddFsiBoundary ( const std::vector< ChVector3d > &  bce,
const ChFrame<> &  rel_frame 
)

Add a set of boundary BCE markers.

BCE marker points are assumed to be specified in the given frame (itself relative to the global frame).

◆ Initialize()

void chrono::fsi::sph::ChFsiSystemSPH::Initialize ( )
overridevirtual

Initialize the FSI system.

A call to this function marks the completion of system construction.

Reimplemented from chrono::fsi::ChFsiSystem.

◆ SetActiveDomain()

void chrono::fsi::sph::ChFsiSystemSPH::SetActiveDomain ( const ChVector3d box_dim)

Set the active domain for all FSI solids (bodies and nodes) to an AABB of given dimensions, centered at the solid origin.

This active AABB is used for all solids for which an active AABB was not set explicitly. This setting is used only for CRM problems and ignored for CFD problems.

◆ SetActiveDomainBody()

void chrono::fsi::sph::ChFsiSystemSPH::SetActiveDomainBody ( size_t  i,
const ChAABB aabb 
)

Set the active domain for the body with specified index (as returned by AddFsiBody).

By default, this is an inverted AABB. This setting is used only for CRM problems and ignored for CFD problems.

◆ SetActiveDomainMesh1D()

void chrono::fsi::sph::ChFsiSystemSPH::SetActiveDomainMesh1D ( size_t  i,
const ChAABB aabb 
)

Set the active domain for the nodes of the 1D mesh with specified index (as returned by AddFsiMesh1D).

By default, this is an inverted AABB. This setting is used only for CRM problems and ignored for CFD problems.

◆ SetActiveDomainMesh2D()

void chrono::fsi::sph::ChFsiSystemSPH::SetActiveDomainMesh2D ( size_t  i,
const ChAABB aabb 
)

Set the active domain for the nodes of the 2D mesh with specified index (as returned by AddFsiMesh2D).

By default, this is an inverted AABB. This setting is used only for CRM problems and ignored for CFD problems.


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