chrono::fsi::sph::ChFsiProblemWavetank Class Reference

Description

Class to construct a wavetank with a rigid piston or flap wavemaker mechanism.

The wavetank can include a beach for wave dissipation, by specifying a profile for the bottom.

#include <ChFsiProblemSPH.h>

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

Classes

class  Profile
 Interface for callback to specify wave tank profile. More...
 

Public Types

enum  WavemakerType { PISTON, FLAP }
 Wavemaker mechanism types.
 

Public Member Functions

 ChFsiProblemWavetank (ChSystem &sys, double spacing)
 Create a ChFsiProblemSPH object. More...
 
void SetProfile (std::shared_ptr< Profile > profile, bool end_wall)
 Set the callback for the bottom tank profile and indicate if an end-wall is constructed. More...
 
void SetLateralPeriodicBC (bool periodic_BC)
 Use periodic boundary conditions in lateral direction (default: false). More...
 
std::shared_ptr< ChBodyConstructWaveTank (WavemakerType type, const ChVector3d &pos, const ChVector3d &box_size, double depth, std::shared_ptr< ChFunction > actuation)
 Add a wave tank with a rigid-body wavemaker (piston-type or flap-type). More...
 
- Public Member Functions inherited from chrono::fsi::sph::ChFsiProblemCartesian
 ChFsiProblemCartesian (ChSystem &sys, double spacing)
 Create a ChFsiProblemSPH object. More...
 
void Construct (const std::string &sph_file, const std::string &bce_file, const ChVector3d &pos)
 Construct using information from the specified files. More...
 
void Construct (const ChVector3d &box_size, const ChVector3d &pos, int side_flags)
 Construct SPH particles and optionally BCE markers in a box of given dimensions. More...
 
void Construct (const std::string &heightmap_file, double length, double width, const ChVector2d &height_range, double depth, bool uniform_depth, const ChVector3d &pos, int side_flags)
 Construct SPH particles and optionally BCE markers from a given heightmap. More...
 
size_t AddBoxContainer (const ChVector3d &box_size, const ChVector3d &pos, int side_flags)
 Add fixed BCE markers, representing a container for the computational domain. More...
 
- Public Member Functions inherited from chrono::fsi::sph::ChFsiProblemSPH
void SetVerbose (bool verbose)
 Enable verbose output during construction of ChFsiProblemSPH (default: false).
 
ChFsiSystemSPHGetSystemFSI ()
 Access the underlying FSI system.
 
ChFsiFluidSystemSPHGetFluidSystemSPH ()
 Access the underlying SPH system.
 
ChSystemGetMultibodySystem ()
 Access the underlying MBS system.
 
void SetCfdSPH (const ChFsiFluidSystemSPH::FluidProperties &fluid_props)
 Enable solution of a CFD problem.
 
void SetElasticSPH (const ChFsiFluidSystemSPH::ElasticMaterialProperties &mat_props)
 Enable solution of elastic SPH (for continuum representation of granular dynamics). More...
 
void SetSPHParameters (const ChFsiFluidSystemSPH::SPHParameters &sph_params)
 Set SPH method parameters.
 
void SetSplashsurfParameters (const ChFsiFluidSystemSPH::SplashsurfParameters &params)
 Set surface reconstruction parameters (with splashsurf).
 
void AddRigidBody (std::shared_ptr< ChBody > body, std::shared_ptr< utils::ChBodyGeometry > geometry, bool check_embedded, bool use_grid_bce=false)
 Add a rigid body to the FSI problem. More...
 
void AddRigidBodySphere (std::shared_ptr< ChBody > body, const ChVector3d &pos, double radius, bool use_grid_bce=false)
 
void AddRigidBodyBox (std::shared_ptr< ChBody > body, const ChFramed &pos, const ChVector3d &size)
 
void AddRigidBodyCylinderX (std::shared_ptr< ChBody > body, const ChFramed &pos, double radius, double length, bool use_grid_bce=false)
 
void AddRigidBodyMesh (std::shared_ptr< ChBody > body, const ChFramed &pos, const std::string &obj_file, const ChVector3d &interior_point, double scale)
 
size_t GetNumBCE (std::shared_ptr< ChBody > body) const
 Return the number of BCE markers associated with the specified rigid body.
 
void UseNodeDirections (bool val)
 Enable/disable use of node directions when assigning BCE locations on FEA elements. More...
 
void SetBcePattern1D (BcePatternMesh1D pattern, bool remove_center=false)
 Set the BCE marker pattern for 1D flexible solids for subsequent calls to AddFeaMesh. More...
 
void SetBcePattern2D (BcePatternMesh2D pattern, bool remove_center=false)
 Set the BCE marker pattern for 2D flexible solids for subsequent calls to AddFeaMesh. More...
 
void AddFeaMesh (std::shared_ptr< fea::ChMesh > mesh, bool check_embedded)
 Add an FEA mesh to the FSI problem. More...
 
void RegisterParticlePropertiesCallback (std::shared_ptr< ParticlePropertiesCallback > callback)
 Register a callback for setting SPH particle initial properties.
 
void SetGravitationalAcceleration (const ChVector3d &gravity)
 Set gravitational acceleration for both multibody and fluid systems.
 
void SetStepSizeCFD (double step)
 Set integration step size for fluid dynamics.
 
void SetStepsizeMBD (double step)
 Set integration step size for multibody dynamics. More...
 
void SetComputationalDomain (const ChAABB &aabb, BoundaryConditions bc_type={BCType::NONE, BCType::NONE, BCType::NONE})
 Explicitly set the computational domain limits. More...
 
void Initialize ()
 Complete construction of the FSI problem and initialize the FSI system. More...
 
void DoStepDynamics (double step)
 Advance the dynamics of the underlying FSI system by the specified step.
 
std::shared_ptr< ChBodyGetGroundBody () const
 Get the ground body.
 
size_t GetNumSPHParticles () const
 Get number of SPH particles.
 
size_t GetNumBoundaryBCEMarkers () const
 Get number of boundary BCE markers.
 
const ChAABBGetComputationalDomain () const
 Get limits of computational domain.
 
const BoundaryConditionsGetBoundaryConditionTypes () const
 Get the boundary condition type for the three sides of the computational domain.
 
const ChAABBGetSPHBoundingBox () const
 Get limits of SPH volume.
 
const ChVector3dGetFsiBodyForce (std::shared_ptr< ChBody > body) const
 Return the FSI applied force on the specified body (as returned by AddRigidBody). More...
 
const ChVector3dGetFsiBodyTorque (std::shared_ptr< ChBody > body) const
 Return the FSI applied torque on on the specified body (as returned by AddRigidBody). 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.
 
void SetOutputLevel (OutputLevel output_level)
 Set SPH simulation data output level (default: STATE_PRESSURE). More...
 
void SaveOutputData (double time, const std::string &sph_dir, const std::string &fsi_dir)
 Save current SPH and solid data to files. More...
 
void SaveInitialMarkers (const std::string &out_dir) const
 Save the set of initial SPH and BCE grid locations to files in the specified output directory.
 
void WriteReconstructedSurface (const std::string &dir, const std::string &name, bool quiet=false)
 Reconstruct surface from the current SPH particle data cloud. More...
 
PhysicsProblem GetPhysicsProblem () const
 
std::string GetPhysicsProblemString () const
 
std::string GetSphIntegrationSchemeString () const
 

Additional Inherited Members

- Protected Types inherited from chrono::fsi::sph::ChFsiProblemSPH
typedef std::unordered_set< ChVector3i, CoordHashGridPoints
 Grid points with integer coordinates.
 
- Protected Member Functions inherited from chrono::fsi::sph::ChFsiProblemSPH
 ChFsiProblemSPH (ChSystem &sys, double spacing)
 Create a ChFsiProblemSPH object. More...
 
void ProcessBody (ChFsiFluidSystemSPH::FsiSphBody &b)
 Prune SPH markers that are inside the solid body volume. More...
 
int ProcessBodyMesh (ChFsiFluidSystemSPH::FsiSphBody &b, ChTriangleMeshConnected trimesh, const ChVector3d &interior_point)
 Prune SPH markers that are inside a body mesh volume. More...
 
void ProcessFeaMesh1D (ChFsiFluidSystemSPH::FsiSphMesh1D &m)
 Prune SPH markers that overlap with the FEA mesh BCE markers.
 
void ProcessFeaMesh2D (ChFsiFluidSystemSPH::FsiSphMesh2D &m)
 Prune SPH markers that overlap with the FEA mesh BCE markers.
 
void CreateParticleRelocator ()
 
void BCEShift (const ChVector3d &shift_dist)
 
void SPHShift (const ChVector3d &shift_dist)
 
void SPHMoveAABB2AABB (const ChAABB &aabb_src, const ChIntAABB &aabb_dest)
 
void ForceProximitySearch ()
 
- Protected Attributes inherited from chrono::fsi::sph::ChFsiProblemSPH
ChFsiFluidSystemSPH m_sysSPH
 underlying Chrono SPH system
 
ChFsiSystemSPH m_sysFSI
 underlying Chrono FSI system
 
ChFsiSplashsurfSPH m_splashsurf
 surface reconstructor
 
double m_spacing
 particle and marker spacing
 
std::shared_ptr< ChBodym_ground
 ground body
 
GridPoints m_sph
 SPH particle grid locations.
 
GridPoints m_bce
 boundary BCE marker grid locations
 
ChVector3d m_offset_sph
 SPH particles offset.
 
ChVector3d m_offset_bce
 boundary BCE particles offset
 
ChAABB m_domain_aabb
 computational domain bounding box
 
BoundaryConditions m_bc_type
 boundary conditions in each direction
 
ChAABB m_sph_aabb
 SPH volume bounding box.
 
std::unordered_map< std::shared_ptr< ChBody >, size_t > m_fsi_bodies
 map from ChBody pointer to index in FSI body list
 
std::shared_ptr< ParticlePropertiesCallbackm_props_cb
 callback for particle properties
 
std::unique_ptr< FsiParticleRelocator > m_relocator
 
bool m_verbose
 if true, write information to standard output
 
bool m_initialized
 if true, problem was initialized
 

Constructor & Destructor Documentation

◆ ChFsiProblemWavetank()

chrono::fsi::sph::ChFsiProblemWavetank::ChFsiProblemWavetank ( ChSystem sys,
double  spacing 
)

Create a ChFsiProblemSPH object.

No SPH parameters are set.

Member Function Documentation

◆ ConstructWaveTank()

std::shared_ptr< ChBody > chrono::fsi::sph::ChFsiProblemWavetank::ConstructWaveTank ( WavemakerType  type,
const ChVector3d pos,
const ChVector3d box_size,
double  depth,
std::shared_ptr< ChFunction actuation 
)

Add a wave tank with a rigid-body wavemaker (piston-type or flap-type).

Parameters
typewave generator type
posreference position
box_sizebox dimensions
depthfluid depth
actuationactuation function

◆ SetLateralPeriodicBC()

void chrono::fsi::sph::ChFsiProblemWavetank::SetLateralPeriodicBC ( bool  periodic_BC)
inline

Use periodic boundary conditions in lateral direction (default: false).

If not set, side boundary conditions are enforced by constructing lateral walls.

◆ SetProfile()

void chrono::fsi::sph::ChFsiProblemWavetank::SetProfile ( std::shared_ptr< Profile profile,
bool  end_wall 
)

Set the callback for the bottom tank profile and indicate if an end-wall is constructed.

By default, a tank with flat bottom and with end-wall is constructed


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