Description

Physical system for fluid-solid interaction problems.

This class is used to represent fluid-solid interaction problems consisting of fluid dynamics and multibody system. Each of the two underlying physics is an independent object owned and instantiated by this class. The FSI system owns other objects to handle the interface between the two systems, boundary condition enforcing markers, and data.

#include <ChSystemFsi.h>

Classes

struct  ElasticMaterialProperties
 Structure with elastic material properties. More...
 
struct  FluidProperties
 Structure with fluid properties. More...
 
struct  LinSolverParameters
 Structure with linear solver parameters (used only for implicit SPH). More...
 
struct  SPHParameters
 Structure with SPH method parameters. More...
 

Public Types

enum  PhysicsProblem { CFD, CRM }
 Physics problem type.
 
enum  OutputMode { OutputMode::CSV, OutputMode::CHPF, OutputMode::NONE }
 Output mode. More...
 

Public Member Functions

 ChSystemFsi (ChSystem *sysMBS=nullptr)
 Constructor for FSI system.
 
 ~ChSystemFsi ()
 Destructor for the FSI system.
 
void AttachSystem (ChSystem *sysMBS)
 Attach Chrono MBS system.
 
void DoStepDynamics_FSI ()
 Function to integrate the FSI system in time. More...
 
double GetRTF () const
 Get current estimated RTF (real time factor).
 
double GetRatioMBS () const
 Get ratio of simulation time spent in MBS integration.
 
void SetVerbose (bool verbose)
 Enable/disable verbose terminal output.
 
void ReadParametersFromFile (const std::string &json_file)
 Read Chrono::FSI parameters from the specified JSON file.
 
void SetInitialSpacing (double spacing)
 Set initial spacing.
 
void SetKernelLength (double length)
 Set SPH kernel length.
 
void SetContainerDim (const ChVector3d &boxDim)
 Set the fluid container dimension.
 
void SetBoundaries (const ChVector3d &cMin, const ChVector3d &cMax)
 Set periodic boundary condition for fluid.
 
void SetActiveDomain (const ChVector3d &boxHalfDim)
 Set half-dimensions of the active domain. More...
 
void SetActiveDomainDelay (double duration)
 Disable use of the active domain for the given duration at the beginning of the simulation (default: 0). More...
 
void SetNumBCELayers (int num_layers)
 Set number of BCE marker layers (default: 3).
 
void SetDensity (double rho0)
 Set (initial) density.
 
void SetInitPressure (const double fzDim)
 Set prescribed initial pressure for gravity field.
 
void SetGravitationalAcceleration (const ChVector3d &gravity)
 Set gravity for the FSI syatem.
 
void SetBodyForce (const ChVector3d &force)
 Set a constant force applied to the fluid. More...
 
void SetStepSize (double dT, double dT_Flex=0)
 Set FSI integration step size.
 
void SetMaxStepSize (double dT_max)
 Set the maximum allowable integration step size.
 
void SetAdaptiveTimeStepping (bool adaptive)
 Enable/disable adaptive time stepping.
 
void SetSPHintegration (bool runSPH)
 Enable/disable SPH integration.
 
void SetConsistentDerivativeDiscretization (bool consistent_gradient, bool consistent_Laplacian)
 Set SPH discretization type, consistent or inconsistent.
 
void SetCohesionForce (double Fc)
 Set cohesion force of the granular material.
 
void SetSPHLinearSolver (SolverType lin_solver)
 Set the linear system solver for implicit methods. / TODO: OBSOLETE.
 
void SetSPHMethod (SPHMethod SPH_method)
 Set the SPH method and, optionally, the linear solver type. / TODO: OBSOLETE.
 
void SetNumProximitySearchSteps (int steps)
 Set the number of steps between successive updates to neighbor lists (default: 4).
 
void SetCfdSPH (const FluidProperties &fluid_props)
 Enable solution of a CFD problem.
 
void SetElasticSPH (const ElasticMaterialProperties &mat_props)
 Enable solution of elastic SPH (for continuum representation of granular dynamics). More...
 
void SetSPHParameters (const SPHParameters &sph_params)
 Set SPH method parameters.
 
void SetLinSolverParameters (const LinSolverParameters &linsolv_params)
 Set linear solver parameters (used only for implicit SPH).
 
void SetOutputLength (int OutputLength)
 Set simulation data output length.
 
void SetParticleOutputMode (OutputMode mode)
 Set the FSI system output mode (default: NONE).
 
double GetKernelLength () const
 Return the SPH kernel length of kernel function.
 
double GetInitialSpacing () const
 Return the initial spacing of the SPH particles.
 
int GetNumBCELayers () const
 Return the number of BCE layers.
 
ChVector3d GetContainerDim () const
 Set the fluid container dimension.
 
double GetDensity () const
 Return density.
 
double GetViscosity () const
 Return viscosity.
 
double GetParticleMass () const
 Return SPH particle mass.
 
double GetBasePressure () const
 Return base pressure.
 
ChVector3d GetGravitationalAcceleration () const
 Return gravitational acceleration.
 
double GetSoundSpeed () const
 Return the speed of sound in the fluid phase.
 
ChVector3d GetBodyForce () const
 Return the constant force applied to the fluid (if any). More...
 
double GetStepSize () const
 Return the FSI integration step size.
 
double GetMaxStepSize () const
 Return the current value of the maximum allowable integration step size.
 
bool GetAdaptiveTimeStepping () const
 Return a flag inicating whether adaptive time stepping is enabled.
 
int GetNumProximitySearchSteps () const
 Get the number of steps between successive updates to neighbor lists.
 
const SimParamsGetParams () const
 Return the current system parameters (debugging only).
 
size_t GetNumFluidMarkers () const
 Get the current number of fluid SPH particles.
 
size_t GetNumBoundaryMarkers () const
 Get the current number of boundary BCE markers.
 
size_t GetNumRigidBodyMarkers () const
 Get the current number of rigid body BCE markers.
 
size_t GetNumFlexBodyMarkers () const
 Get the current number of flexible body BCE markers.
 
double GetSimTime () const
 Get current simulation time.
 
std::vector< ChVector3dGetParticlePositions () const
 Return the SPH particle positions.
 
std::vector< ChVector3dGetParticleVelocities () const
 Return the SPH particle velocities.
 
std::vector< ChVector3dGetParticleForces () const
 Return the forces acting on SPH particles.
 
std::vector< ChVector3dGetParticleAccelerations () const
 Return the accelerations of SPH particles.
 
std::vector< ChVector3dGetParticleFluidProperties () const
 Return the SPH particle fluid properties. More...
 
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...
 
void Initialize ()
 Complete construction of the FSI system (fluid and BDE objects). More...
 
void WriteParticleFile (const std::string &outfilename) const
 Write FSI system particle output.
 
void PrintParticleToFile (const std::string &dir) const
 Save the SPH particle information into files. More...
 
void PrintFsiInfoToFile (const std::string &dir, double time) const
 Save the FSI information into files. More...
 
void AddSPHParticle (const ChVector3d &point, double rho0, double pres0, double mu0, const ChVector3d &velocity=ChVector3d(0), const ChVector3d &tauXxYyZz=ChVector3d(0), const ChVector3d &tauXyXzYz=ChVector3d(0))
 Add an SPH particle with given properties to the FSI system.
 
void AddSPHParticle (const ChVector3d &point, const ChVector3d &velocity=ChVector3d(0), const ChVector3d &tauXxYyZz=ChVector3d(0), const ChVector3d &tauXyXzYz=ChVector3d(0))
 Add an SPH particle with current properties to the SPH system.
 
void AddBoxSPH (const ChVector3d &boxCenter, const ChVector3d &boxHalfDim)
 Create SPH particles in the specified box volume. More...
 
size_t AddFsiBody (std::shared_ptr< ChBody > body)
 Add a rigid body to the FSI system. More...
 
void AddWallBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, const ChVector2d &size)
 Add BCE markers for a rectangular plate of specified X-Y dimensions and associate them with the given body. More...
 
void AddBoxContainerBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, const ChVector3d &size, const ChVector3i faces)
 Add BCE markers for a box container of specified dimensions and associate them with the given body. More...
 
size_t AddBoxBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, const ChVector3d &size, bool solid)
 Add BCE markers for a box of specified dimensions and associate them with the given body. More...
 
size_t AddSphereBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, double radius, bool solid, bool polar=true)
 Add BCE markers for a sphere of specified radius and associate them with the given body. More...
 
size_t AddCylinderBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, double radius, double height, bool solid, bool capped=true, bool polar=true)
 Add BCE markers for a cylinder of specified radius and height and associate them with the given body. More...
 
size_t AddCylinderAnnulusBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, double radius_inner, double radius_outer, double height, bool polar=true)
 Add BCE markers for a cylindrical annulus of specified radii and height and associate them with the given body. More...
 
size_t AddConeBCE (std::shared_ptr< ChBody > body, const ChFrame<> &frame, double radius, double height, bool solid, bool capped=true, bool polar=true)
 Add BCE markers for a cone of specified radius and height and associate them with the given body. More...
 
size_t AddPointsBCE (std::shared_ptr< ChBody > body, const std::vector< ChVector3d > &points, const ChFrame<> &rel_frame, bool solid)
 Add BCE markers from a set of points and associate them with the given body. More...
 
void SetBcePattern1D (BcePatternMesh1D pattern, bool remove_center=false)
 Set the BCE marker pattern for 1D flexible solids for subsequent calls to AddFsiMesh. More...
 
void SetBcePattern2D (BcePatternMesh2D pattern, bool remove_center=false)
 Set the BCE marker pattern for 2D flexible solids for subsequent calls to AddFsiMesh. More...
 
void AddFsiMesh (std::shared_ptr< fea::ChMesh > mesh)
 Add an FEA mesh to the FSI system. More...
 
thrust::device_vector< int > FindParticlesInBox (const ChFrame<> &frame, const ChVector3d &size)
 Utility function for finding indices of SPH particles inside a given OBB. More...
 
thrust::device_vector< Real4 > GetParticlePositions (const thrust::device_vector< int > &indices)
 Extract positions of all SPH particles with indices in the provided array. More...
 
thrust::device_vector< Real3 > GetParticleVelocities (const thrust::device_vector< int > &indices)
 Extract velocities of all SPH particles with indices in the provided array. More...
 
thrust::device_vector< Real4 > GetParticleForces (const thrust::device_vector< int > &indices)
 Extract forces applied to all SPH particles with indices in the provided array. More...
 
thrust::device_vector< Real4 > GetParticleAccelerations (const thrust::device_vector< int > &indices)
 Extract accelerations of all SPH particles with indices in the provided array. More...
 
void CreateBCE_wall (const ChVector2d &size, std::vector< ChVector3d > &bce)
 Create BCE markers on a rectangular plate of specified X-Y dimensions, assumed centered at the origin. More...
 
void CreateBCE_box (const ChVector3d &size, bool solid, std::vector< ChVector3d > &bce)
 Create BCE markers for a box of specified dimensions, assumed centered at the origin. More...
 
void CreateBCE_sphere (double rad, bool solid, bool polar, std::vector< ChVector3d > &bce)
 Create BCE markers for a sphere of specified radius, assumed centered at the origin. More...
 
void CreateBCE_cylinder (double rad, double height, bool solid, bool capped, bool polar, std::vector< ChVector3d > &bce)
 Create BCE markers for a cylinder of specified radius and height. More...
 
void CreateBCE_cone (double rad, double height, bool solid, bool capped, bool polar, std::vector< ChVector3d > &bce)
 Create BCE particles for a cone of specified radius and height. More...
 
PhysicsProblem GetPhysicsProblem () const
 
std::string GetPhysicsProblemString () const
 
std::string GetSphMethodTypeString () const
 

Static Public Member Functions

static void CreateCylinderAnnulusPoints (double rad_inner, double rad_outer, double height, bool polar, double delta, std::vector< ChVector3d > &points)
 Utility function to create points inside a cylindrical annulus of specified radii and height. More...
 
static void CreateMeshPoints (ChTriangleMeshConnected &mesh, double delta, std::vector< ChVector3d > &points)
 Utility function for creating points filling a closed mesh. More...
 

Friends

class ChFsiVisualizationGL
 
class ChFsiVisualizationVSG
 

Member Enumeration Documentation

◆ OutputMode

Output mode.

Enumerator
CSV 

comma-separated value

CHPF 

binary

NONE 

none

Member Function Documentation

◆ AddBoxBCE()

size_t chrono::fsi::ChSystemFsi::AddBoxBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
const ChVector3d size,
bool  solid 
)

Add BCE markers for a box of specified dimensions and associate them with the given body.

The box is assumed to be centered at the origin of the provided frame and aligned with its axes. BCE markers are created inside the box if solid=true, and outside the box otherwise. BCE markers are created in a number of layers corresponding to system parameters.

◆ AddBoxContainerBCE()

void chrono::fsi::ChSystemFsi::AddBoxContainerBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
const ChVector3d size,
const ChVector3i  faces 
)

Add BCE markers for a box container of specified dimensions and associate them with the given body.

The center of the box volume is at the origin of the given frame and the the container is aligned with the frame axes. Such a container is assumed to be used as a boundary. The 'faces' input vector specifies which faces of the container are to be created: for each direction, a value of -1 indicates the face in the negative direction, a value of +1 indicates the face in the positive direction, and a value of 2 indicates both faces. Setting a value of 0 does not create container faces in that direction. BCE markers are created in a number of layers corresponding to system parameters. Such a container is assumed to be used as a fixed boundary and the associated body is not tracked in FSI.

◆ AddBoxSPH()

void chrono::fsi::ChSystemFsi::AddBoxSPH ( const ChVector3d boxCenter,
const ChVector3d boxHalfDim 
)

Create SPH particles in the specified box volume.

The SPH particles are created on a uniform grid with resolution equal to the FSI initial separation.

◆ AddConeBCE()

size_t chrono::fsi::ChSystemFsi::AddConeBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
double  radius,
double  height,
bool  solid,
bool  capped = true,
bool  polar = true 
)

Add BCE markers for a cone of specified radius and height and associate them with the given body.

The cone is assumed centered at the origin of the provided frame and aligned with its Z axis. BCE markers are created inside the cone if solid=true, and outside the cone otherwise. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using cylinderical coordinates (default), or else on a uniform Cartesian grid.

◆ AddCylinderAnnulusBCE()

size_t chrono::fsi::ChSystemFsi::AddCylinderAnnulusBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
double  radius_inner,
double  radius_outer,
double  height,
bool  polar = true 
)

Add BCE markers for a cylindrical annulus of specified radii and height and associate them with the given body.

The cylindrical annulus is assumed centered at the origin of the provided frame and aligned with its Z axis. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using cylinderical coordinates (default), or else on a uniform Cartesian grid. Such a cylindrical annulus is assumed to be used on a solid body.

◆ AddCylinderBCE()

size_t chrono::fsi::ChSystemFsi::AddCylinderBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
double  radius,
double  height,
bool  solid,
bool  capped = true,
bool  polar = true 
)

Add BCE markers for a cylinder of specified radius and height and associate them with the given body.

The cylinder is assumed centered at the origin of the provided frame and aligned with its Z axis. BCE markers are created inside the cylinder if solid=true, and outside the cylinder otherwise. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using cylinderical coordinates (default), or else on a uniform Cartesian grid.

◆ AddFsiBody()

size_t chrono::fsi::ChSystemFsi::AddFsiBody ( std::shared_ptr< ChBody body)

Add a rigid body to the FSI system.

Returns the index of the FSI body in the internal list.

◆ AddFsiMesh()

void chrono::fsi::ChSystemFsi::AddFsiMesh ( std::shared_ptr< fea::ChMesh mesh)

Add an FEA mesh to the FSI system.

Contact surfaces (of type segment_set or tri_mesh) already defined for the FEA mesh are used to generate the BCE markers for the flexible solid. If none are defined, one contact surface of each type is created (as needed) for the purpose of creating the BCE markers, but these are not attached to the given FEA mesh.

◆ AddPointsBCE()

size_t chrono::fsi::ChSystemFsi::AddPointsBCE ( std::shared_ptr< ChBody body,
const std::vector< ChVector3d > &  points,
const ChFrame<> &  rel_frame,
bool  solid 
)

Add BCE markers from a set of points and associate them with the given body.

The points are assumed to be provided relative to the specified frame. The BCE markers are created in the absolute coordinate frame.

◆ AddSphereBCE()

size_t chrono::fsi::ChSystemFsi::AddSphereBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
double  radius,
bool  solid,
bool  polar = true 
)

Add BCE markers for a sphere of specified radius and associate them with the given body.

The sphere is assumed to be centered at the origin of the provided frame. BCE markers are created inside the sphere if solid=true, and outside the sphere otherwise. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using spherical coordinates (default), or else on a uniform Cartesian grid.

◆ AddWallBCE()

void chrono::fsi::ChSystemFsi::AddWallBCE ( std::shared_ptr< ChBody body,
const ChFrame<> &  frame,
const ChVector2d size 
)

Add BCE markers for a rectangular plate of specified X-Y dimensions and associate them with the given body.

BCE markers are created in a number of layers corresponding to system parameters. X-Y BCE layers are created in the negative Z direction of the plate orientation frame. Such a plate is assumed to be used as boundary.

◆ CreateBCE_box()

void chrono::fsi::ChSystemFsi::CreateBCE_box ( const ChVector3d size,
bool  solid,
std::vector< ChVector3d > &  bce 
)

Create BCE markers for a box of specified dimensions, assumed centered at the origin.

BCE markers are created inside the box if solid=true, and outside the box otherwise. BCE markers are created in a number of layers corresponding to system parameters.

◆ CreateBCE_cone()

void chrono::fsi::ChSystemFsi::CreateBCE_cone ( double  rad,
double  height,
bool  solid,
bool  capped,
bool  polar,
std::vector< ChVector3d > &  bce 
)

Create BCE particles for a cone of specified radius and height.

The cone is assumed centered at the origin and aligned with the Z axis. The end-cap is created if capped = true, otherwise the cone is open. BCE markers are created inside the cone if solid=true, and outside the cone otherwise. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using cylinderical coordinates (polar=true), or else on a uniform Cartesian grid.

◆ CreateBCE_cylinder()

void chrono::fsi::ChSystemFsi::CreateBCE_cylinder ( double  rad,
double  height,
bool  solid,
bool  capped,
bool  polar,
std::vector< ChVector3d > &  bce 
)

Create BCE markers for a cylinder of specified radius and height.

The cylinder is assumed centered at the origin and aligned with the Z axis. The end-caps are created if capped = true, otherwise the cylinder is open. BCE markers are created inside the cylinder if solid=true, and outside the cylinder otherwise. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using cylinderical coordinates (polar=true), or else on a uniform Cartesian grid.

◆ CreateBCE_sphere()

void chrono::fsi::ChSystemFsi::CreateBCE_sphere ( double  rad,
bool  solid,
bool  polar,
std::vector< ChVector3d > &  bce 
)

Create BCE markers for a sphere of specified radius, assumed centered at the origin.

BCE markers are created inside the sphere if solid=true, and outside the sphere otherwise. BCE markers are created in a number of layers corresponding to system parameters. BCE markers are created using spherical coordinates (polar=true), or else on a uniform Cartesian grid.

◆ CreateBCE_wall()

void chrono::fsi::ChSystemFsi::CreateBCE_wall ( const ChVector2d size,
std::vector< ChVector3d > &  bce 
)

Create BCE markers on a rectangular plate of specified X-Y dimensions, assumed centered at the origin.

BCE markers are created in a number of layers corresponding to system parameters. BCE layers are created in the negative Z direction.

◆ CreateCylinderAnnulusPoints()

void chrono::fsi::ChSystemFsi::CreateCylinderAnnulusPoints ( double  rad_inner,
double  rad_outer,
double  height,
bool  polar,
double  delta,
std::vector< ChVector3d > &  points 
)
static

Utility function to create points inside a cylindrical annulus of specified radii and height.

The cylinder annulus is assumed centered at the origin and aligned with the Z axis. If polar = true, points are created in cylindrical coordinates; otherwise points are created on a uniform Cartesian grid.

◆ CreateMeshPoints()

void chrono::fsi::ChSystemFsi::CreateMeshPoints ( ChTriangleMeshConnected mesh,
double  delta,
std::vector< ChVector3d > &  points 
)
static

Utility function for creating points filling a closed mesh.

Calculate uu parameter and test bound

ray intersection

◆ DoStepDynamics_FSI()

void chrono::fsi::ChSystemFsi::DoStepDynamics_FSI ( )

Function to integrate the FSI system in time.

It uses a Runge-Kutta 2nd order algorithm to update both the fluid and multibody system dynamics. The midpoint data of MBS is needed for fluid dynamics update.

◆ FindParticlesInBox()

thrust::device_vector< int > chrono::fsi::ChSystemFsi::FindParticlesInBox ( const ChFrame<> &  frame,
const ChVector3d size 
)

Utility function for finding indices of SPH particles inside a given OBB.

The object-oriented box, of specified size, is assumed centered at the origin of the provided frame and aligned with the axes of that frame. The return value is a device thrust vector.

◆ GetBodyForce()

ChVector3d chrono::fsi::ChSystemFsi::GetBodyForce ( ) const

Return the constant force applied to the fluid (if any).

TODO: RENAME

◆ GetFsiBodyForce()

const ChVector3d & chrono::fsi::ChSystemFsi::GetFsiBodyForce ( size_t  i) const

Return the FSI applied force on the body with specified index (as returned by AddFsiBody).

The force is applied at the body COM and is expressed in the absolute frame.

◆ GetFsiBodyTorque()

const ChVector3d & chrono::fsi::ChSystemFsi::GetFsiBodyTorque ( size_t  i) const

Return the FSI applied torque on the body with specified index (as returned by AddFsiBody).

The torque is expressed in the absolute frame.

◆ GetParticleAccelerations()

thrust::device_vector< Real4 > chrono::fsi::ChSystemFsi::GetParticleAccelerations ( const thrust::device_vector< int > &  indices)

Extract accelerations of all SPH particles with indices in the provided array.

The return value is a device thrust vector.

◆ GetParticleFluidProperties()

std::vector< ChVector3d > chrono::fsi::ChSystemFsi::GetParticleFluidProperties ( ) const

Return the SPH particle fluid properties.

For each SPH particle, the 3-dimensional array contains density, pressure, and viscosity.

◆ GetParticleForces()

thrust::device_vector< Real4 > chrono::fsi::ChSystemFsi::GetParticleForces ( const thrust::device_vector< int > &  indices)

Extract forces applied to all SPH particles with indices in the provided array.

The return value is a device thrust vector.

◆ GetParticlePositions()

thrust::device_vector< Real4 > chrono::fsi::ChSystemFsi::GetParticlePositions ( const thrust::device_vector< int > &  indices)

Extract positions of all SPH particles with indices in the provided array.

The return value is a device thrust vector.

◆ GetParticleVelocities()

thrust::device_vector< Real3 > chrono::fsi::ChSystemFsi::GetParticleVelocities ( const thrust::device_vector< int > &  indices)

Extract velocities of all SPH particles with indices in the provided array.

The return value is a device thrust vector.

◆ Initialize()

void chrono::fsi::ChSystemFsi::Initialize ( )

Complete construction of the FSI system (fluid and BDE objects).

Use parameters read from JSON file and/or specified through various Set functions.

◆ PrintFsiInfoToFile()

void chrono::fsi::ChSystemFsi::PrintFsiInfoToFile ( const std::string &  dir,
double  time 
) const

Save the FSI information into files.

This function creates CSV files for force and torque on rigid bodies and flexible nodes.

◆ PrintParticleToFile()

void chrono::fsi::ChSystemFsi::PrintParticleToFile ( const std::string &  dir) const

Save the SPH particle information into files.

This function creates three CSV files for SPH particles, boundary BCE markers, and solid BCE markers data.

◆ SetActiveDomain()

void chrono::fsi::ChSystemFsi::SetActiveDomain ( const ChVector3d boxHalfDim)

Set half-dimensions of the active domain.

This value activates only those SPH particles that are within an AABB of the specified size from an object interacting with the "fluid" phase. Note that this setting should not be used for actual (CFD) simulations, but rather oinly when Chrono::FSI is used for continuum representation of granular dynamics (in terramechanics).

◆ SetActiveDomainDelay()

void chrono::fsi::ChSystemFsi::SetActiveDomainDelay ( double  duration)

Disable use of the active domain for the given duration at the beginning of the simulation (default: 0).

This parameter is used for settling operations where all particles must be active through the settling process.

◆ SetBcePattern1D()

void chrono::fsi::ChSystemFsi::SetBcePattern1D ( BcePatternMesh1D  pattern,
bool  remove_center = false 
)

Set the BCE marker pattern for 1D flexible solids for subsequent calls to AddFsiMesh.

By default, a full set of BCE markers is used across each section, including a central marker.

Parameters
patternmarker pattern in cross-section
remove_centereliminate markers on center line

◆ SetBcePattern2D()

void chrono::fsi::ChSystemFsi::SetBcePattern2D ( BcePatternMesh2D  pattern,
bool  remove_center = false 
)

Set the BCE marker pattern for 2D flexible solids for subsequent calls to AddFsiMesh.

By default, BCE markers are created centered on the mesh surface, with a layer of BCEs on the surface.

Parameters
patternpattern of marker locations along normal
remove_centereliminate markers on surface

◆ SetBodyForce()

void chrono::fsi::ChSystemFsi::SetBodyForce ( const ChVector3d force)

Set a constant force applied to the fluid.

Solid bodies are not explicitly affected by this force, but they are affected indirectly through the fluid.

◆ SetElasticSPH()

void chrono::fsi::ChSystemFsi::SetElasticSPH ( const ElasticMaterialProperties mat_props)

Enable solution of elastic SPH (for continuum representation of granular dynamics).

By default, a ChSystemFSI solves an SPH fluid dynamics problem.


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