chrono::fsi::sph Namespace Reference

Description

Namespace with internal classes for the SPH-based FSI submodule.

Namespaces

 BoxSide
 Enumeration for box sides.
 
 CylSide
 Enumeration for cylinder sides.
 
 PeriodicSide
 Enumeration for specifying whether the sides of a computational domain are periodic or not.
 

Classes

class  BceManager
 Manager for processing boundary condition enforcing (BCE) particle forces in an FSI system. More...
 
class  ChFsiFluidSystemSPH
 Physical system for an FSI-aware SPH fluid solver. More...
 
class  ChFsiInterfaceSPH
 Custom FSI interface between a Chrono multibody system and the SPH-based fluid system. More...
 
struct  ChFsiParamsSPH
 Structure with FSI simulation parameters. More...
 
class  ChFsiProblemCartesian
 Class to set up a Chrono::FSI problem using particles and markers on a Cartesian coordinates grid. More...
 
class  ChFsiProblemCylindrical
 Class to set up a Chrono::FSI problem using particles and markers on a cylindrical coordinates grid. More...
 
class  ChFsiProblemSPH
 Base class to set up a Chrono::FSI problem. More...
 
class  ChFsiSystemSPH
 FSI system using an SPH-based fluid solver. More...
 
class  ChFsiVisualizationVSG
 VSG-based run-time visualization system for SPH-based FSI systems. More...
 
class  CollisionSystem
 Base class for processing proximity computation in an FSI system. More...
 
struct  Counters
 Number of rigid and flexible solid bodies, fluid SPH particles, solid SPH particles, boundary SPH particles. More...
 
struct  CudaDeviceInfo
 Struct to store CUDA device information. More...
 
class  DepthPressurePropertiesCallback
 Predefined SPH particle initial properties callback (depth-based pressure). More...
 
class  FluidDynamics
 Class to represent the fluid/granular dynamics system. More...
 
struct  FsiBodyStateD
 Rigid body states on device. More...
 
struct  FsiBodyStateH
 Rigid body states on host. More...
 
struct  FsiDataManager
 Data manager for the SPH-based FSI system. More...
 
class  FsiForce
 Base class to calculate force between SPH particles. More...
 
class  FsiForceISPH
 Inter-particle force calculation for the I2SPH method. More...
 
class  FsiForceWCSPH
 Inter-particle force calculation for explicit schemes. More...
 
struct  FsiMeshStateD
 FEA mesh state on device. More...
 
struct  FsiMeshStateH
 FEA mesh states on host. More...
 
class  GpuTimer
 Time recorder for cuda events. More...
 
class  LinearSolver
 Base class for solving linear systems on GPUs. More...
 
class  LinearSolverBiCGStab
 BiCG-Stab iterative linear solver. More...
 
class  LinearSolverGMRES
 GMRES iterative linear solver. More...
 
class  ParticleDensityColorCallback
 Predefined SPH coloring based on particle density. More...
 
class  ParticleHeightColorCallback
 Predefined SPH coloring based on particle height. More...
 
class  ParticlePressureColorCallback
 Predefined SPH coloring based on particle pressure. More...
 
class  ParticleVelocityColorCallback
 Predefined SPH coloring based on particle velocity. More...
 
struct  ProximityDataD
 Struct to store neighbor search information on the device. More...
 
struct  Real2
 Pair of reals. More...
 
struct  Real3
 Triplet of reals. More...
 
struct  Real4
 Quadruplet of reals. More...
 
struct  SphMarkerDataD
 Struct to store the information of SPH particles on the device. More...
 
struct  SphMarkerDataH
 Struct to store the information of SPH particles on the host. More...
 
class  WaveTankParabolicBeach
 Predefined wave tank profile with a parabolic beach. More...
 
class  WaveTankRampBeach
 Predefined wave tank profile with a ramp beach. More...
 

Typedefs

typedef float Real
 Real type used in the SPH Chrono::FSI module (float or double).
 
typedef unsigned int uint
 Unsigned int type used in the SPH Chrono::FSI module.
 
typedef unsigned short ushort
 Unsigned short type used in the SPH Chrono::FSI module.
 
typedef thrust::device_vector< Real3 >::iterator r3IterD
 typedef device iterators for shorthand SPH operation of thrust vectors of Real3
 
typedef thrust::device_vector< Real4 >::iterator r4IterD
 typedef device iterators for shorthand SPH operation of thrust vectors of Real4
 
typedef thrust::tuple< r4IterD, r3IterD, r4IterD, r3IterD, r3IterDiterTupleSphD
 typedef device tuple for holding SPH data pos,vel,[rho,pressure,mu,type]
 
typedef thrust::zip_iterator< iterTupleSphDzipIterSphD
 
typedef thrust::host_vector< Real3 >::iterator r3IterH
 typedef host iterators for shorthand SPH operation of thrust vectors of Real3
 
typedef thrust::host_vector< Real4 >::iterator r4IterH
 typedef host iterators for shorthand SPH operation of thrust vectors of Real4
 
typedef thrust::tuple< r4IterH, r3IterH, r4IterH, r3IterH, r3IterHiterTupleH
 typedef host tuple for holding SPH data pos,vel,[rho,pressure,mu,type]
 
typedef thrust::zip_iterator< iterTupleHzipIterSphH
 
typedef thrust::tuple< r3IterD, r3IterD, r3IterD, r4IterD, r3IterD, r3IterDiterTupleRigidD
 typedef device iterators for shorthand rigid body states: pos,lin_vel,lin_acc,rot,ang_Vel,ang_acc
 
typedef thrust::zip_iterator< iterTupleRigidDzipIterRigidD
 
typedef thrust::tuple< r3IterH, r3IterH, r3IterH, r4IterH, r3IterH, r3IterHiterTupleRigidH
 typedef host iterators for shorthand rigid body states: pos,lin_vel,lin_acc,rot,ang_Vel,ang_acc
 
typedef thrust::zip_iterator< iterTupleRigidHzipIterRigidH
 
typedef thrust::tuple< r3IterH, r3IterH, r3IterH, r4IterH, r3IterH, r3IterHiterTupleChronoBodiesH
 typedef device iterators for shorthand chrono bodies operations
 
typedef thrust::zip_iterator< iterTupleChronoBodiesHzipIterChronoBodiesH
 

Enumerations

enum  PhysicsProblem { PhysicsProblem::CFD, PhysicsProblem::CRM }
 Physics problem type. More...
 
enum  SPHMethod { SPHMethod::WCSPH, SPHMethod::I2SPH }
 SPH method. More...
 
enum  ShiftingMethod {
  NONE, PPST, XSPH, PPST_XSPH,
  DIFFUSION, DIFFUSION_XSPH
}
 Shifting Methods.
 
enum  EosType { TAIT, ISOTHERMAL }
 Equation of State type. More...
 
enum  KernelType { QUADRATIC, CUBIC_SPLINE, QUINTIC_SPLINE, WENDLAND }
 SPH kernel type.
 
enum  ViscosityType { LAMINAR, ARTIFICIAL_UNILATERAL, ARTIFICIAL_BILATERAL }
 Visosity method type.
 
enum  BoundaryType { ADAMI, HOLMES }
 Boundary type.
 
enum  Rheology { INERTIA_RHEOLOGY, NONLOCAL_FLUIDITY }
 Rheology type.
 
enum  FrictionLaw { CONSTANT, LINEAR, NONLINEAR }
 Friction law in ISPH.
 
enum  SolverType {
  JACOBI, BICGSTAB, GMRES, CR,
  CG, SAP
}
 Linear solver type.
 
enum  BcePatternMesh1D { FULL, STAR }
 BCE pattern in cross section of 1-D flexible elements. More...
 
enum  BcePatternMesh2D { CENTERED, OUTWARD, INWARD }
 BCE pattern along normal of 2-D surface of flexible elements. More...
 
enum  OutputLevel { OutputLevel::STATE, OutputLevel::STATE_PRESSURE, OutputLevel::CFD_FULL, OutputLevel::CRM_FULL }
 Output level. More...
 
enum  MarkerGroup {
  FLUID, SOLID, BOUNDARY, NON_FLUID,
  NON_SOLID, NON_BOUNDARY, ALL
}
 Marker (SPH and BCE) groups.
 
enum  MarkerType {
  SPH_PARTICLE, SPH_HELPER, SPH_GHOST, BCE_WALL,
  BCE_RIGID, BCE_FLEX1D, BCE_FLEX2D
}
 Marker (SPH and BCE) type.
 

Functions

Real3 LoadVectorJSON (const Value &a)
 
void printStruct (struct Real2 &s)
 Print a Real2 struct.
 
void printStruct (struct Real3 &s)
 Print a Real3 struct.
 
void printStruct (struct Real4 &s)
 Print a Real4 struct.
 
void printStruct (struct int2 &s)
 Print an Int2 struct.
 
void printStruct (struct int3 &s)
 Print an Int3 struct.
 
void printStruct (struct int4 &s)
 Print an Int4 struct.
 
bool InsidePoint (const utils::ChBodyGeometry &geometry, const ChVector3d &p, double envelope)
 
__host__ __device__ float fminf (float a, float b)
 Return the minimum of two single precision numbers.
 
__host__ __device__ float fmaxf (float a, float b)
 Return the maximum of two single precision numbers.
 
__host__ __device__ int max (int a, int b)
 Return the maximum of two integer numbers.
 
__host__ __device__ int min (int a, int b)
 Return the minimum of two integer numbers.
 
__host__ __device__ float rsqrtf (float x)
 Return the reciprocal square root of a single precision number.
 
__host__ __device__ Real square (Real a)
 Square a float value.
 
__host__ __device__ Real cube (Real a)
 Cube a float value.
 
__host__ __device__ Real quartic (Real a)
 Quartic a float value.
 
__host__ __device__ Real quintic (Real a)
 Quintic a float value.
 
__VECTOR_FUNCTIONS_DECL__ uint2 make_uint2 (unsigned int x, unsigned int y)
 Make a vector with two unsigned integer elements.
 
__VECTOR_FUNCTIONS_DECL__ uint3 make_uint3 (unsigned int x, unsigned int y, unsigned int z)
 Make a vector with three unsigned integer elements.
 
__VECTOR_FUNCTIONS_DECL__ uint4 make_uint4 (unsigned int x, unsigned int y, unsigned int z, unsigned int w)
 Make a vector with four unsigned integer elements.
 
__VECTOR_FUNCTIONS_DECL__ int2 make_int2 (int x, int y)
 Make a vector with two integer elements.
 
__VECTOR_FUNCTIONS_DECL__ int3 make_int3 (int x, int y, int z)
 Make a vector with three integer elements.
 
__VECTOR_FUNCTIONS_DECL__ int4 make_int4 (int x, int y, int z, int w)
 Make a vector with four integer elements.
 
__VECTOR_FUNCTIONS_DECL__ float2 make_float2 (float x, float y)
 Make a vector with two float elements.
 
__VECTOR_FUNCTIONS_DECL__ float3 make_float3 (float x, float y, float z)
 Make a vector with three float elements.
 
__VECTOR_FUNCTIONS_DECL__ float4 make_float4 (float x, float y, float z, float w)
 Make a vector with four float elements.
 
__VECTOR_FUNCTIONS_DECL__ double2 make_double2 (double x, double y)
 Make a vector with two double elements.
 
__VECTOR_FUNCTIONS_DECL__ double3 make_double3 (double x, double y, double z)
 Make a vector with three double elements.
 
__VECTOR_FUNCTIONS_DECL__ double4 make_double4 (double x, double y, double z, double w)
 Make a vector with four double elements.
 
__host__ __device__ float2 make_float2 (float s)
 
__host__ __device__ float2 make_float2 (float3 a)
 
__host__ __device__ float2 make_float2 (int2 a)
 
__host__ __device__ float2 make_float2 (uint2 a)
 
__host__ __device__ int2 make_int2 (int s)
 
__host__ __device__ int2 make_int2 (int3 a)
 
__host__ __device__ int2 make_int2 (int4 a)
 
__host__ __device__ int2 make_int2 (uint2 a)
 
__host__ __device__ int2 make_int2 (float2 a)
 
__host__ __device__ uint2 make_uint2 (uint s)
 
__host__ __device__ uint2 make_uint2 (uint3 a)
 
__host__ __device__ uint2 make_uint2 (int2 a)
 
__host__ __device__ float3 make_float3 (float s)
 
__host__ __device__ float3 make_float3 (float2 a)
 
__host__ __device__ float3 make_float3 (float2 a, float s)
 
__host__ __device__ float3 make_float3 (float4 a)
 
__host__ __device__ float3 make_float3 (int3 a)
 
__host__ __device__ float3 make_float3 (uint3 a)
 
__host__ __device__ int3 make_int3 (int s)
 
__host__ __device__ int3 make_int3 (int2 a)
 
__host__ __device__ int3 make_int3 (int2 a, int s)
 
__host__ __device__ int3 make_int3 (uint3 a)
 
__host__ __device__ int3 make_int3 (float3 a)
 
__host__ __device__ uint3 make_uint3 (uint s)
 
__host__ __device__ uint3 make_uint3 (uint2 a)
 
__host__ __device__ uint3 make_uint3 (uint2 a, uint s)
 
__host__ __device__ uint3 make_uint3 (uint4 a)
 
__host__ __device__ uint3 make_uint3 (int3 a)
 
__host__ __device__ float4 make_float4 (float s)
 
__host__ __device__ float4 make_float4 (float3 a)
 
__host__ __device__ float4 make_float4 (float3 a, float w)
 
__host__ __device__ float4 make_float4 (int4 a)
 
__host__ __device__ float4 make_float4 (uint4 a)
 
__host__ __device__ int4 make_int4 (int s)
 
__host__ __device__ int4 make_int4 (int3 a)
 
__host__ __device__ int4 make_int4 (int3 a, int w)
 
__host__ __device__ int4 make_int4 (uint4 a)
 
__host__ __device__ int4 make_int4 (float4 a)
 
__host__ __device__ uint4 make_uint4 (uint s)
 
__host__ __device__ uint4 make_uint4 (uint3 a)
 
__host__ __device__ uint4 make_uint4 (uint3 a, uint w)
 
__host__ __device__ uint4 make_uint4 (int4 a)
 
__host__ __device__ float2 operator- (float2 &a)
 
__host__ __device__ int2 operator- (int2 &a)
 
__host__ __device__ float3 operator- (float3 &a)
 
__host__ __device__ int3 operator- (int3 &a)
 
__host__ __device__ float4 operator- (float4 &a)
 
__host__ __device__ int4 operator- (int4 &a)
 
__host__ __device__ float2 operator+ (float2 a, float2 b)
 
__host__ __device__ void operator+= (float2 &a, float2 b)
 
__host__ __device__ float2 operator+ (float2 a, float b)
 
__host__ __device__ float2 operator+ (float b, float2 a)
 
__host__ __device__ void operator+= (float2 &a, float b)
 
__host__ __device__ int2 operator+ (int2 a, int2 b)
 
__host__ __device__ void operator+= (int2 &a, int2 b)
 
__host__ __device__ int2 operator+ (int2 a, int b)
 
__host__ __device__ int2 operator+ (int b, int2 a)
 
__host__ __device__ void operator+= (int2 &a, int b)
 
__host__ __device__ uint2 operator+ (uint2 a, uint2 b)
 
__host__ __device__ void operator+= (uint2 &a, uint2 b)
 
__host__ __device__ uint2 operator+ (uint2 a, uint b)
 
__host__ __device__ uint2 operator+ (uint b, uint2 a)
 
__host__ __device__ void operator+= (uint2 &a, uint b)
 
__host__ __device__ float3 operator+ (float3 a, float3 b)
 
__host__ __device__ void operator+= (float3 &a, float3 b)
 
__host__ __device__ float3 operator+ (float3 a, float b)
 
__host__ __device__ void operator+= (float3 &a, float b)
 
__host__ __device__ int3 operator+ (int3 a, int3 b)
 
__host__ __device__ void operator+= (int3 &a, int3 b)
 
__host__ __device__ int3 operator+ (int3 a, int b)
 
__host__ __device__ void operator+= (int3 &a, int b)
 
__host__ __device__ uint3 operator+ (uint3 a, uint3 b)
 
__host__ __device__ void operator+= (uint3 &a, uint3 b)
 
__host__ __device__ uint3 operator+ (uint3 a, uint b)
 
__host__ __device__ void operator+= (uint3 &a, uint b)
 
__host__ __device__ int3 operator+ (int b, int3 a)
 
__host__ __device__ uint3 operator+ (uint b, uint3 a)
 
__host__ __device__ float3 operator+ (float b, float3 a)
 
__host__ __device__ float4 operator+ (float4 a, float4 b)
 
__host__ __device__ void operator+= (float4 &a, float4 b)
 
__host__ __device__ float4 operator+ (float4 a, float b)
 
__host__ __device__ float4 operator+ (float b, float4 a)
 
__host__ __device__ void operator+= (float4 &a, float b)
 
__host__ __device__ int4 operator+ (int4 a, int4 b)
 
__host__ __device__ void operator+= (int4 &a, int4 b)
 
__host__ __device__ int4 operator+ (int4 a, int b)
 
__host__ __device__ int4 operator+ (int b, int4 a)
 
__host__ __device__ void operator+= (int4 &a, int b)
 
__host__ __device__ uint4 operator+ (uint4 a, uint4 b)
 
__host__ __device__ void operator+= (uint4 &a, uint4 b)
 
__host__ __device__ uint4 operator+ (uint4 a, uint b)
 
__host__ __device__ uint4 operator+ (uint b, uint4 a)
 
__host__ __device__ void operator+= (uint4 &a, uint b)
 
__host__ __device__ float2 operator- (float2 a, float2 b)
 
__host__ __device__ void operator-= (float2 &a, float2 b)
 
__host__ __device__ float2 operator- (float2 a, float b)
 
__host__ __device__ float2 operator- (float b, float2 a)
 
__host__ __device__ void operator-= (float2 &a, float b)
 
__host__ __device__ int2 operator- (int2 a, int2 b)
 
__host__ __device__ void operator-= (int2 &a, int2 b)
 
__host__ __device__ int2 operator- (int2 a, int b)
 
__host__ __device__ int2 operator- (int b, int2 a)
 
__host__ __device__ void operator-= (int2 &a, int b)
 
__host__ __device__ uint2 operator- (uint2 a, uint2 b)
 
__host__ __device__ void operator-= (uint2 &a, uint2 b)
 
__host__ __device__ uint2 operator- (uint2 a, uint b)
 
__host__ __device__ uint2 operator- (uint b, uint2 a)
 
__host__ __device__ void operator-= (uint2 &a, uint b)
 
__host__ __device__ float3 operator- (float3 a, float3 b)
 
__host__ __device__ void operator-= (float3 &a, float3 b)
 
__host__ __device__ float3 operator- (float3 a, float b)
 
__host__ __device__ float3 operator- (float b, float3 a)
 
__host__ __device__ void operator-= (float3 &a, float b)
 
__host__ __device__ int3 operator- (int3 a, int3 b)
 
__host__ __device__ void operator-= (int3 &a, int3 b)
 
__host__ __device__ int3 operator- (int3 a, int b)
 
__host__ __device__ int3 operator- (int b, int3 a)
 
__host__ __device__ void operator-= (int3 &a, int b)
 
__host__ __device__ uint3 operator- (uint3 a, uint3 b)
 
__host__ __device__ void operator-= (uint3 &a, uint3 b)
 
__host__ __device__ uint3 operator- (uint3 a, uint b)
 
__host__ __device__ uint3 operator- (uint b, uint3 a)
 
__host__ __device__ void operator-= (uint3 &a, uint b)
 
__host__ __device__ float4 operator- (float4 a, float4 b)
 
__host__ __device__ void operator-= (float4 &a, float4 b)
 
__host__ __device__ float4 operator- (float4 a, float b)
 
__host__ __device__ void operator-= (float4 &a, float b)
 
__host__ __device__ int4 operator- (int4 a, int4 b)
 
__host__ __device__ void operator-= (int4 &a, int4 b)
 
__host__ __device__ int4 operator- (int4 a, int b)
 
__host__ __device__ int4 operator- (int b, int4 a)
 
__host__ __device__ void operator-= (int4 &a, int b)
 
__host__ __device__ uint4 operator- (uint4 a, uint4 b)
 
__host__ __device__ void operator-= (uint4 &a, uint4 b)
 
__host__ __device__ uint4 operator- (uint4 a, uint b)
 
__host__ __device__ uint4 operator- (uint b, uint4 a)
 
__host__ __device__ void operator-= (uint4 &a, uint b)
 
__host__ __device__ float2 operator* (float2 a, float2 b)
 
__host__ __device__ void operator*= (float2 &a, float2 b)
 
__host__ __device__ float2 operator* (float2 a, float b)
 
__host__ __device__ float2 operator* (float b, float2 a)
 
__host__ __device__ void operator*= (float2 &a, float b)
 
__host__ __device__ int2 operator* (int2 a, int2 b)
 
__host__ __device__ void operator*= (int2 &a, int2 b)
 
__host__ __device__ int2 operator* (int2 a, int b)
 
__host__ __device__ int2 operator* (int b, int2 a)
 
__host__ __device__ void operator*= (int2 &a, int b)
 
__host__ __device__ uint2 operator* (uint2 a, uint2 b)
 
__host__ __device__ void operator*= (uint2 &a, uint2 b)
 
__host__ __device__ uint2 operator* (uint2 a, uint b)
 
__host__ __device__ uint2 operator* (uint b, uint2 a)
 
__host__ __device__ void operator*= (uint2 &a, uint b)
 
__host__ __device__ float3 operator* (float3 a, float3 b)
 
__host__ __device__ void operator*= (float3 &a, float3 b)
 
__host__ __device__ float3 operator* (float3 a, float b)
 
__host__ __device__ float3 operator* (float b, float3 a)
 
__host__ __device__ void operator*= (float3 &a, float b)
 
__host__ __device__ int3 operator* (int3 a, int3 b)
 
__host__ __device__ void operator*= (int3 &a, int3 b)
 
__host__ __device__ int3 operator* (int3 a, int b)
 
__host__ __device__ int3 operator* (int b, int3 a)
 
__host__ __device__ void operator*= (int3 &a, int b)
 
__host__ __device__ uint3 operator* (uint3 a, uint3 b)
 
__host__ __device__ void operator*= (uint3 &a, uint3 b)
 
__host__ __device__ uint3 operator* (uint3 a, uint b)
 
__host__ __device__ uint3 operator* (uint b, uint3 a)
 
__host__ __device__ void operator*= (uint3 &a, uint b)
 
__host__ __device__ float4 operator* (float4 a, float4 b)
 
__host__ __device__ void operator*= (float4 &a, float4 b)
 
__host__ __device__ float4 operator* (float4 a, float b)
 
__host__ __device__ float4 operator* (float b, float4 a)
 
__host__ __device__ void operator*= (float4 &a, float b)
 
__host__ __device__ int4 operator* (int4 a, int4 b)
 
__host__ __device__ void operator*= (int4 &a, int4 b)
 
__host__ __device__ int4 operator* (int4 a, int b)
 
__host__ __device__ int4 operator* (int b, int4 a)
 
__host__ __device__ void operator*= (int4 &a, int b)
 
__host__ __device__ uint4 operator* (uint4 a, uint4 b)
 
__host__ __device__ void operator*= (uint4 &a, uint4 b)
 
__host__ __device__ uint4 operator* (uint4 a, uint b)
 
__host__ __device__ uint4 operator* (uint b, uint4 a)
 
__host__ __device__ void operator*= (uint4 &a, uint b)
 
__host__ __device__ float2 operator/ (float2 a, float2 b)
 
__host__ __device__ void operator/= (float2 &a, float2 b)
 
__host__ __device__ float2 operator/ (float2 a, float b)
 
__host__ __device__ void operator/= (float2 &a, float b)
 
__host__ __device__ float2 operator/ (float b, float2 a)
 
__host__ __device__ float3 operator/ (float3 a, float3 b)
 
__host__ __device__ void operator/= (float3 &a, float3 b)
 
__host__ __device__ float3 operator/ (float3 a, float b)
 
__host__ __device__ void operator/= (float3 &a, float b)
 
__host__ __device__ float3 operator/ (float b, float3 a)
 
__host__ __device__ float4 operator/ (float4 a, float4 b)
 
__host__ __device__ void operator/= (float4 &a, float4 b)
 
__host__ __device__ float4 operator/ (float4 a, float b)
 
__host__ __device__ void operator/= (float4 &a, float b)
 
__host__ __device__ float4 operator/ (float b, float4 a)
 
__host__ __device__ float2 fminf (float2 a, float2 b)
 
__host__ __device__ float3 fminf (float3 a, float3 b)
 
__host__ __device__ float4 fminf (float4 a, float4 b)
 
__host__ __device__ int2 min (int2 a, int2 b)
 
__host__ __device__ int3 min (int3 a, int3 b)
 
__host__ __device__ int4 min (int4 a, int4 b)
 
__host__ __device__ uint2 min (uint2 a, uint2 b)
 
__host__ __device__ uint3 min (uint3 a, uint3 b)
 
__host__ __device__ uint4 min (uint4 a, uint4 b)
 
__host__ __device__ float2 fmaxf (float2 a, float2 b)
 
__host__ __device__ float3 fmaxf (float3 a, float3 b)
 
__host__ __device__ float4 fmaxf (float4 a, float4 b)
 
__host__ __device__ int2 max (int2 a, int2 b)
 
__host__ __device__ int3 max (int3 a, int3 b)
 
__host__ __device__ int4 max (int4 a, int4 b)
 
__host__ __device__ uint2 max (uint2 a, uint2 b)
 
__host__ __device__ uint3 max (uint3 a, uint3 b)
 
__host__ __device__ uint4 max (uint4 a, uint4 b)
 
__device__ __host__ float lerp (float a, float b, float t)
 
__device__ __host__ float2 lerp (float2 a, float2 b, float t)
 
__device__ __host__ float3 lerp (float3 a, float3 b, float t)
 
__device__ __host__ float4 lerp (float4 a, float4 b, float t)
 
__host__ __device__ float dot (float2 a, float2 b)
 
__host__ __device__ float dot (float3 a, float3 b)
 
__host__ __device__ float dot (float4 a, float4 b)
 
__host__ __device__ int dot (int2 a, int2 b)
 
__host__ __device__ int dot (int3 a, int3 b)
 
__host__ __device__ int dot (int4 a, int4 b)
 
__host__ __device__ uint dot (uint2 a, uint2 b)
 
__host__ __device__ uint dot (uint3 a, uint3 b)
 
__host__ __device__ uint dot (uint4 a, uint4 b)
 
__host__ __device__ float length (float2 v)
 
__host__ __device__ float length (float3 v)
 
__host__ __device__ float length (float4 v)
 
__host__ __device__ float2 normalize (float2 v)
 
__host__ __device__ float3 normalize (float3 v)
 
__host__ __device__ float4 normalize (float4 v)
 
__host__ __device__ float3 cross (float3 a, float3 b)
 
__host__ __device__ Real rminr (Real a, Real b)
 
__host__ __device__ Real rmaxr (Real a, Real b)
 
__host__ __device__ Real rsqrtr (Real x)
 
__host__ __device__ Real2 make_Real2 (Real b, Real c)
 
__host__ __device__ Real2 make_Real2 (Real s)
 
__host__ __device__ Real2 make_Real2 (Real3 a)
 
__host__ __device__ Real2 make_Real2 (int2 a)
 
__host__ __device__ Real2 make_Real2 (uint2 a)
 
__host__ __device__ int2 make_int2 (Real2 a)
 
__host__ __device__ Real3 make_Real3 (Real a, Real b, Real c)
 
__host__ __device__ Real3 make_Real3 (Real s)
 
__host__ __device__ Real3 make_Real3 (Real2 a)
 
__host__ __device__ Real3 make_Real3 (Real2 a, Real s)
 
__host__ __device__ Real3 make_Real3 (Real4 a)
 
__host__ __device__ Real3 make_Real3 (int3 a)
 
__host__ __device__ Real3 make_Real3 (uint3 a)
 
__host__ __device__ int3 make_int3 (Real3 a)
 
__host__ __device__ Real3 make_Real3 (Real3 a)
 
__host__ __device__ Real4 make_Real4 (Real a, Real b, Real c, Real d)
 
__host__ __device__ Real4 make_Real4 (Real s)
 
__host__ __device__ Real4 make_Real4 (Real3 a)
 
__host__ __device__ Real4 make_Real4 (Real3 a, Real w)
 
__host__ __device__ Real4 make_Real4 (Real4 a)
 
__host__ __device__ Real4 make_Real4 (int4 a)
 
__host__ __device__ Real4 make_Real4 (uint4 a)
 
__host__ __device__ int4 make_int4 (Real4 a)
 
__host__ __device__ Real2 operator- (Real2 &a)
 
__host__ __device__ Real3 operator- (Real3 &a)
 
__host__ __device__ Real4 operator- (Real4 &a)
 
__host__ __device__ Real2 operator+ (Real2 a, Real2 b)
 
__host__ __device__ void operator+= (Real2 &a, Real2 b)
 
__host__ __device__ Real2 operator+ (Real2 a, Real b)
 
__host__ __device__ Real2 operator+ (Real b, Real2 a)
 
__host__ __device__ void operator+= (Real2 &a, Real b)
 
__host__ __device__ Real3 operator+ (Real3 a, Real3 b)
 
__host__ __device__ void operator+= (Real3 &a, Real3 b)
 
__host__ __device__ Real3 operator+ (Real3 a, Real b)
 
__host__ __device__ void operator+= (Real3 &a, Real b)
 
__host__ __device__ Real3 operator+ (Real b, Real3 a)
 
__host__ __device__ Real4 operator+ (Real4 a, Real4 b)
 
__host__ __device__ void operator+= (Real4 &a, Real4 b)
 
__host__ __device__ Real4 operator+ (Real4 a, Real b)
 
__host__ __device__ Real4 operator+ (Real b, Real4 a)
 
__host__ __device__ void operator+= (Real4 &a, Real b)
 
__host__ __device__ Real2 operator- (Real2 a, Real2 b)
 
__host__ __device__ void operator-= (Real2 &a, Real2 b)
 
__host__ __device__ Real2 operator- (Real2 a, Real b)
 
__host__ __device__ Real2 operator- (Real b, Real2 a)
 
__host__ __device__ void operator-= (Real2 &a, Real b)
 
__host__ __device__ Real3 operator- (Real3 a, Real3 b)
 
__host__ __device__ void operator-= (Real3 &a, Real3 b)
 
__host__ __device__ Real3 operator- (Real3 a, Real b)
 
__host__ __device__ Real3 operator- (Real b, Real3 a)
 
__host__ __device__ void operator-= (Real3 &a, Real b)
 
__host__ __device__ Real4 operator- (Real4 a, Real4 b)
 
__host__ __device__ void operator-= (Real4 &a, Real4 b)
 
__host__ __device__ Real4 operator- (Real4 a, Real b)
 
__host__ __device__ void operator-= (Real4 &a, Real b)
 
__host__ __device__ Real2 operator* (Real2 a, Real2 b)
 
__host__ __device__ void operator*= (Real2 &a, Real2 b)
 
__host__ __device__ Real2 operator* (Real2 a, Real b)
 
__host__ __device__ Real2 operator* (Real b, Real2 a)
 
__host__ __device__ void operator*= (Real2 &a, Real b)
 
__host__ __device__ Real3 operator* (Real3 a, Real3 b)
 
__host__ __device__ void operator*= (Real3 &a, Real3 b)
 
__host__ __device__ Real3 operator* (Real3 a, Real b)
 
__host__ __device__ Real3 operator* (Real b, Real3 a)
 
__host__ __device__ void operator*= (Real3 &a, Real b)
 
__host__ __device__ Real4 operator* (Real4 a, Real4 b)
 
__host__ __device__ void operator*= (Real4 &a, Real4 b)
 
__host__ __device__ Real4 operator* (Real4 a, Real b)
 
__host__ __device__ Real4 operator* (Real b, Real4 a)
 
__host__ __device__ void operator*= (Real4 &a, Real b)
 
__host__ __device__ Real2 operator/ (Real2 a, Real2 b)
 
__host__ __device__ void operator/= (Real2 &a, Real2 b)
 
__host__ __device__ Real2 operator/ (Real2 a, Real b)
 
__host__ __device__ void operator/= (Real2 &a, Real b)
 
__host__ __device__ Real2 operator/ (Real b, Real2 a)
 
__host__ __device__ Real3 operator/ (Real3 a, Real3 b)
 
__host__ __device__ void operator/= (Real3 &a, Real3 b)
 
__host__ __device__ Real3 operator/ (Real3 a, Real b)
 
__host__ __device__ void operator/= (Real3 &a, Real b)
 
__host__ __device__ Real3 operator/ (Real b, Real3 a)
 
__host__ __device__ Real4 operator/ (Real4 a, Real4 b)
 
__host__ __device__ void operator/= (Real4 &a, Real4 b)
 
__host__ __device__ Real4 operator/ (Real4 a, Real b)
 
__host__ __device__ void operator/= (Real4 &a, Real b)
 
__host__ __device__ Real4 operator/ (Real b, Real4 a)
 
__host__ __device__ Real2 rminr (Real2 a, Real2 b)
 
__host__ __device__ Real3 rminr (Real3 a, Real3 b)
 
__host__ __device__ Real4 rminr (Real4 a, Real4 b)
 
__host__ __device__ Real2 rmaxr (Real2 a, Real2 b)
 
__host__ __device__ Real3 rmaxr (Real3 a, Real3 b)
 
__host__ __device__ Real4 rmaxr (Real4 a, Real4 b)
 
__host__ __device__ Real2 lerp (Real2 a, Real2 b, Real t)
 
__host__ __device__ Real3 lerp (Real3 a, Real3 b, Real t)
 
__host__ __device__ Real4 lerp (Real4 a, Real4 b, Real t)
 
__host__ __device__ Real dot (Real2 a, Real2 b)
 
__host__ __device__ Real dot (Real3 a, Real3 b)
 
__host__ __device__ Real dot (Real4 a, Real4 b)
 
__host__ __device__ Real length (Real v)
 
__host__ __device__ Real length (Real2 v)
 
__host__ __device__ Real length (Real3 v)
 
__host__ __device__ Real length (Real4 v)
 
__host__ __device__ Real2 normalize (Real2 v)
 
__host__ __device__ Real3 normalize (Real3 v)
 
__host__ __device__ Real4 normalize (Real4 v)
 
__host__ __device__ Real3 cross (Real3 a, Real3 b)
 
__host__ __device__ Real sgn (Real a)
 
__host__ __device__ Real3 sgn (Real3 a)
 
__host__ __device__ Real3 user_BC_U (Real3 Pos)
 
__host__ __device__ bool IsFinite (Real3 v)
 
__host__ __device__ bool IsFinite (Real4 v)
 
void printMatrix (const Real *A, int Ny, int Nx)
 
void GeneratePlaneRotation (const Real &dx, const Real &dy, Real &cs, Real &sn)
 
void ApplyPlaneRotation (Real &dx, Real &dy, const Real &cs, const Real &sn)
 
void PlaneRotation (Real *H, Real *cs, Real *sn, Real *s, const int i, const int restart)
 
__device__ void clearRow (uint i_idx, uint csrStartIdx, uint csrEndIdx, Real *A_Matrix, Real *Bi)
 
__device__ void clearRow3 (uint i_idx, uint csrStartIdx, uint csrEndIdx, Real *A_Matrix, Real3 *Bi)
 
__host__ __device__ bool IsInMarkerGroup (MarkerGroup group, Real code)
 
__host__ __device__ MarkerType GetMarkerType (Real code)
 
__host__ __device__ Real GetMarkerCode (MarkerType type)
 
__host__ __device__ bool IsSphParticle (Real code)
 
__host__ __device__ bool IsFluidParticle (Real code)
 
__host__ __device__ bool IsBceMarker (Real code)
 
__host__ __device__ bool IsBceWallMarker (Real code)
 
__host__ __device__ bool IsBceSolidMarker (Real code)
 
void CopyParametersToDevice (std::shared_ptr< ChFsiParamsSPH > paramsH, std::shared_ptr< Counters > countersH)
 
__host__ __device__ Real W3h_CubicSpline (Real d, Real invh)
 
__host__ __device__ Real3 GradW3h_CubicSpline (Real3 d, Real invh)
 
__host__ __device__ Real W3h_Quadratic (Real d, Real invh)
 
__host__ __device__ Real3 GradW3h_Quadratic (Real3 d, Real invh)
 
__host__ __device__ Real W3h_QuinticSpline (Real d, Real invh)
 
__host__ __device__ Real3 GradW3h_QuinticSpline (Real3 d, Real invh)
 
__host__ __device__ Real W3h_Wendland (Real d, Real invh)
 
__host__ __device__ Real3 GradW3h_Wendland (Real3 d, Real invh)
 
__host__ __device__ Real W3h (KernelType type, Real d, Real invh)
 
__host__ __device__ Real3 GradW3h (KernelType type, Real3 d, Real invh)
 
__device__ Real Eos (Real rho, EosType eos_type)
 
__device__ Real InvEos (Real pw, EosType eos_type)
 
__device__ Real FerrariCi (Real rho)
 
__device__ Real3 Modify_Local_PosB (Real3 &b, Real3 a)
 
__device__ Real3 Distance (Real3 a, Real3 b)
 
__device__ void RotationMatirixFromQuaternion (Real3 &AD1, Real3 &AD2, Real3 &AD3, const Real4 &q)
 
__device__ Real3 InverseRotate_By_RotationMatrix_DeviceHost (const Real3 &A1, const Real3 &A2, const Real3 &A3, const Real3 &r3)
 
__device__ int3 calcGridPos (Real3 p)
 
__device__ uint calcGridHash (int3 gridPos)
 
__device__ uint calcCellID (uint3 cellPos)
 
__device__ uint getCellPos (int trialCellPos, uint ub)
 
__device__ uint getCenterCellID (const uint *numPartsInCenterCells, const uint threadID)
 
__device__ Real Strain_Rate (Real3 grad_ux, Real3 grad_uy, Real3 grad_uz)
 
__device__ Real Tensor_Norm (Real *T)
 
__device__ Real Sym_Tensor_Norm (Real3 xx_yy_zz, Real3 xy_xz_yz)
 
__device__ Real Inertia_num (Real Strain_rate, Real rho, Real p, Real diam)
 
__device__ Real mu_I (Real Strain_rate, Real I)
 
__device__ Real mu_eff (Real Strain_rate, Real p, Real mu_I)
 
__device__ Real Herschel_Bulkley_stress (Real Strain_rate, Real k, Real n, Real tau0)
 
__device__ Real Herschel_Bulkley_mu_eff (Real Strain_rate, Real k, Real n, Real tau0)
 
__global__ void calc_A_tensor (Real *A_tensor, Real *G_tensor, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, uint *cellStart, uint *cellEnd, volatile bool *error_flag)
 
__global__ void calc_L_tensor (Real *A_tensor, Real *L_tensor, Real *G_tensor, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, uint *cellStart, uint *cellEnd, volatile bool *error_flag)
 
__global__ void calcRho_kernel (Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, const uint *neighborList, const uint *mynumContacts, volatile bool *error_flag)
 
__global__ void calcNormalizedRho_Gi_fillInMatrixIndices (Real4 *sortedPosRad, Real3 *sortedVelMas, Real4 *sortedRhoPreMu, Real *sumWij_inv, Real *G_i, Real3 *normals, const uint *csrColInd, const uint *numContacts, volatile bool *error_flag)
 
__global__ void Function_Gradient_Laplacian_Operator (Real4 *sortedPosRad, Real3 *sortedVelMas, Real4 *sortedRhoPreMu, Real *sumWij_inv, Real *G_tensor, Real *L_tensor, Real *A_L, Real3 *A_G, Real *A_f, uint *csrColInd, uint *numContacts, volatile bool *error_flag)
 
__global__ void Jacobi_SOR_Iter (Real4 *sortedRhoPreMu, Real *A_Matrix, Real3 *V_old, Real3 *V_new, Real3 *b3vec, Real *q_old, Real *q_new, Real *b1vec, const uint *csrColInd, const uint *numContacts, bool _3dvector, volatile bool *error_flag)
 
__global__ void Update_AND_Calc_Res (Real4 *sortedRhoPreMu, Real3 *V_old, Real3 *V_new, Real *q_old, Real *q_new, Real *Residuals, bool _3dvector, volatile bool *error_flag)
 
__global__ void Initialize_Variables (Real4 *sortedRhoPreMu, Real *p_old, Real3 *sortedVelMas, Real3 *V_new, volatile bool *error_flag)
 
__global__ void UpdateDensity (Real3 *vis_vel, Real3 *XSPH_Vel, Real3 *new_vel, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, uint *cellStart, uint *cellEnd, volatile bool *error_flag)
 
__global__ void neighborSearchNum (const Real4 *sortedPosRad, const Real4 *sortedRhoPreMu, const uint *cellStart, const uint *cellEnd, const uint numActive, uint *numNeighborsPerPart, volatile bool *error_flag)
 
__global__ void neighborSearchID (const Real4 *sortedPosRad, const Real4 *sortedRhoPreMu, const uint *cellStart, const uint *cellEnd, const uint numActive, const uint *numNeighborsPerPart, uint *neighborList, volatile bool *error_flag)
 
void computeGridSize (uint n, uint blockSize, uint &numBlocks, uint &numThreads)
 Compute number of blocks and threads for calculation on GPU. More...
 
void saveParticleDataCFD (const std::string &dir, OutputLevel level, FsiDataManager &data_mgr)
 Save current CFD SPH data to files. More...
 
void saveParticleDataCFD (const std::string &dir, OutputLevel level, const thrust::device_vector< Real4 > &posRadD, const thrust::device_vector< Real3 > &velMasD, const thrust::device_vector< Real4 > &derivVelRhoD, const thrust::device_vector< Real4 > &rhoPresMuD, const thrust::device_vector< Real4 > &srTauMuD, const thrust::host_vector< int4 > &referenceArray, const thrust::host_vector< int4 > &referenceArrayFEA)
 
void saveParticleDataCRM (const std::string &dir, OutputLevel level, FsiDataManager &data_mgr)
 Save current CRM SPH data to files. More...
 
void saveParticleDataCRM (const std::string &dir, OutputLevel level, const thrust::device_vector< Real4 > &posRadD, const thrust::device_vector< Real3 > &velMasD, const thrust::device_vector< Real4 > &derivVelRhoD, const thrust::device_vector< Real4 > &rhoPresMuD, const thrust::device_vector< Real3 > &tauXxYyZzD, const thrust::device_vector< Real3 > &tauXyXzYzD, const thrust::host_vector< int4 > &referenceArray, const thrust::host_vector< int4 > &referenceArrayFEA)
 
void saveSolidData (const std::string &dir, double time, FsiDataManager &data_mgr)
 Save current FSI solid data. More...
 
void saveSolidData (const std::string &dir, double time, const thrust::device_vector< Real3 > &posRigidD, const thrust::device_vector< Real4 > &rotRigidD, const thrust::device_vector< Real3 > &velRigidD, const thrust::device_vector< Real3 > &forceRigidD, const thrust::device_vector< Real3 > &torqueRigidD, const thrust::device_vector< Real3 > &pos1DNodeD, const thrust::device_vector< Real3 > &vel1DNodeD, const thrust::device_vector< Real3 > &force1DNodeD, const thrust::device_vector< Real3 > &pos2DNodeD, const thrust::device_vector< Real3 > &vel2DNodeD, const thrust::device_vector< Real3 > &force2DNodeD)
 
void writeParticleFileCSV (const std::string &filename, FsiDataManager &data_mgr)
 Save current particle data to a CSV file. More...
 
void writeParticleFileCSV (const std::string &filename, thrust::device_vector< Real4 > &posRadD, thrust::device_vector< Real3 > &velMasD, thrust::device_vector< Real4 > &rhoPresMuD, thrust::host_vector< int4 > &referenceArray)
 
ChVector3d ToChVector (const Real3 &p3)
 Convert a Real3 data structure to a ChVector3d data structure.
 
ChVector3d ToChVector (const Real2 &p2)
 Convert a Real2 data structure to a ChVector3d data structure.
 
ChVector3d ToChVector (const Real4 &p4)
 Convert the first 3 arguments of a Real4 data structure to a ChVector3d data structure.
 
ChQuaternion ToChQuaternion (const Real4 &q4)
 Convert a Real4 data structure to a ChQuaternion data structure.
 
Real2 ToReal2 (const ChVector2<> &v2)
 Convert a ChVector2 data structure to a Real2 data structure.
 
Real3 ToReal3 (const ChVector3<> &v3)
 Convert a ChVector data structure to a Real3 data structure.
 
Real4 ToReal4 (const ChVector3d &v3, Real m)
 Convert a ChVector3d and a scalar to a Real4 data structure.
 
Real4 ToReal4 (const ChQuaternion<> &q4)
 Convert a ChQuaternion data structure to a Real4 data structure.
 

Variables

const Real pi = Real(CH_PI)