Description
FSI system using an SPH-based fluid solver.
#include <ChFsiSystemSPH.h>


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... | |
| ChFsiFluidSystemSPH & | GetFluidSystemSPH () const |
| Access the associated SPH fluid system. | |
| std::shared_ptr< FsiBody > | 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. 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< FsiBody > | AddFsiBody (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. | |
| ChFsiFluidSystem & | GetFluidSystem () const |
| Access the associated fluid system. | |
| ChSystem & | GetMultibodySystem () const |
| Access the associated multibody system. | |
| ChFsiInterface & | GetFsiInterface () 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< FsiBody > | AddFsiBody (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 ChVector3d & | GetFsiBodyForce (size_t i) const |
| Return the FSI applied force on the body with specified index (as returned by AddFsiBody). More... | |
| const ChVector3d & | GetFsiBodyTorque (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 | |
| ChSystem * | m_sysMBS |
| multibody system | |
| ChFsiFluidSystem * | m_sysCFD |
| FSI fluid solver. | |
| std::shared_ptr< ChFsiInterface > | m_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()
|
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
Public Member Functions inherited from