chrono::fsi::sph Namespace Reference

Description

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

Classes

class  BceManager
 Manager for processing boundary condition enforcing (BCE) particle forces in an FSI system. More...
 
class  ChCollisionSystemFsi
 Base class for processing proximity computation in an FSI system. More...
 
class  ChFluidDynamics
 Class to represent the fluid/granular dynamics system. More...
 
class  ChFsiForce
 Base class to calculate force between SPH particles. More...
 
class  ChFsiForceExplicitSPH
 Inter-particle force calculation for explicit schemes. More...
 
class  ChFsiForceI2SPH
 Inter-particle force calculation for the I2SPH method. More...
 
class  ChFsiLinearSolver
 Base class for solving linear systems on GPUs. More...
 
class  ChFsiLinearSolverBiCGStab
 BiCG-Stab iterative linear solver. More...
 
class  ChFsiLinearSolverGMRES
 GMRES iterative linear solver. 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...
 
struct  FsiBodyStateD
 Rigid body states on device. More...
 
struct  FsiBodyStateH
 Rigid body states on host. More...
 
class  FsiDataManager
 Data manager for the SPH-based FSI system. 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...
 
struct  ProximityDataD
 Struct to store neighbor search information on the device. More...
 
struct  SimParams
 Structure with FSI simulation parameters. 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...
 

Typedefs

typedef float Real
 Define the real type used in FSI (float or double).
 
typedef unsigned int uint
 Define the unsigned int type used in FSI.
 
typedef unsigned short ushort
 Define the unsigned short type used in FSI.
 
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  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

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)
 
__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__ Real4 Cables_ShapeFunctions (Real l, Real xi)
 
__host__ __device__ Real4 Cables_ShapeFunctionsDerivatives (Real l, Real xi)
 
__host__ __device__ Real4 Shells_ShapeFunctions (Real x, Real y)
 
__host__ __device__ Real3 user_BC_U (Real3 Pos)
 
__host__ __device__ bool IsFinite (Real3 v)
 
__host__ __device__ bool IsFinite (Real4 v)
 
__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< SimParams > 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 *activityIdentifierD, uint *numNeighborsPerPart, volatile bool *error_flag)
 
__global__ void neighborSearchID (const Real4 *sortedPosRad, const Real4 *sortedRhoPreMu, const uint *cellStart, const uint *cellEnd, const uint *activityIdentifierD, 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, 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)
 Save current CFD 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)
 Save current CRM SPH data to files. 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)
 Save current FSI solid data. 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)
 Save current particle data to a CSV file. More...
 
void WriteParticleFileCHPF (const std::string &filename, thrust::device_vector< Real4 > &posRadD, thrust::host_vector< int4 > &referenceArray)
 Save current particle data to a binary ChPF file. More...
 
void printStruct (struct Real2 &s)
 Print a Real2 struct.
 
void printStruct (struct int2 &s)
 Print a Int2 struct.
 
void printStruct (struct Real3 &s)
 Print a Real3 struct.
 
void printStruct (struct int3 &s)
 Print a Int3 struct.
 
void printStruct (struct Real4 &s)
 Print a Real4 struct.
 
void printStruct (struct int4 &s)
 Print a Int4 struct.
 
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)
 
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.