chrono::fsi Namespace Reference

Description

Namespace with classes for the FSI module.

Classes

class  ChBce
 Base class for processing boundary condition enforcing (BCE) marker forces in an FSI system. More...
 
class  ChCollisionSystemFsi
 Base class for processing proximity computation in an FSI system. More...
 
class  ChDeviceUtils
 This utility class encapsulates a operators on device vectors which might be needed in host files. More...
 
class  ChFluidDynamics
 Class to represent the fluid dynamics system. More...
 
class  ChFsiDataManager
 Data manager class that holds all the information of the SPH markers and MBD system. More...
 
class  ChFsiForce
 Class to calculate force between SPH markers in Weakly Compressible SPH. More...
 
class  ChFsiForceExplicitSPH
 Child class of ChFsiForce. More...
 
class  ChFsiForceIISPH
 Child class of ChForceParallel that implements the I2SPH method. More...
 
class  ChFsiInterface
 Base class for processing the interface between chrono and fsi modules. More...
 
class  ChFsiLinearSolver
 Base class of the FSI GPU-based linear solvers. More...
 
class  ChFsiLinearSolverBiCGStab
 GPU implementation of BICGSTAB method via CUDA libraries. More...
 
class  ChFsiTypeConvert
 Class for converting Chrono data structure to/from FSI data structure. More...
 
class  ChSystemFsi
 Physical system for fluid-solid interaction problem. More...
 
class  FsiBodiesDataD
 Class for storing the information of rigid bodies of the simulation on the device. More...
 
class  FsiBodiesDataH
 Class for storing the information of rigid bodies of the simulation on the host. More...
 
class  FsiGeneralData
 Class to hold information of the fluid system that needs to be passed to Chrono. More...
 
class  GpuTimer
 A template time recorder for cuda events. More...
 
struct  NumberOfObjects
 Number of fluid markers, solid bodies, solid markers, boundary markers. More...
 
class  ProximityDataD
 Class for storing the neighbor search informations on the device. More...
 
struct  SimParams
 Chrono::FSI simulation parameters. More...
 
class  SphMarkerDataD
 Class for storing the information of SPH markers on the device. More...
 
class  SphMarkerDataH
 Class for storing the information of SPH markers on the host. More...
 

Typedefs

typedef unsigned int uint
 
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, r4IterDiterTupleSphD
 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, r4IterHiterTupleH
 typedef host tuple for holding sph data pos,vel,[rho,pressure,mu,type]
 
typedef thrust::zip_iterator< iterTupleHzipIterSphH
 
typedef thrust::tuple< r3IterD, r4IterD, r3IterD, r4IterD, r3IterD, r3IterDiterTupleRigidD
 typedef device iterators for shorthand rigid body states: pos,orientation in position, velocity and acceleration level
 
typedef thrust::zip_iterator< iterTupleRigidDzipIterRigidD
 
typedef thrust::tuple< r3IterH, r4IterH, r3IterH, r4IterH, r3IterH, r3IterHiterTupleRigidH
 typedef host iterators for shorthand rigid body states: pos,orientation in position, velocity and acceleration level
 
typedef thrust::zip_iterator< iterTupleRigidHzipIterRigidH
 
typedef thrust::tuple< r3IterH, r3IterH, r3IterH, r4IterH, r3IterH, r3IterHiterTupleChronoBodiesH
 
typedef thrust::zip_iterator< iterTupleChronoBodiesH > zipIterChronoBodiesH
 
typedef char MM_typecode[4]
 
typedef float Real
 
typedef unsigned short ushort
 

Enumerations

enum  BceVersion { ADAMI = 0, mORIGINAL = 1 }
 
enum  PPE_SolutionType { MATRIX_FREE, FORM_SPARSE_MATRIX }
 

Functions

__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)
 
void CopyParams_NumberOfObjects (SimParams *paramsH, NumberOfObjects *numObjectsH)
 
__device__ Real W3_Spline (Real d)
 
__device__ Real W3h_Spline (Real d, Real h)
 
__device__ Real W3H_KERNEL (Real d, Real h)
 
__device__ Real3 W3H_GRADW (Real3 d, Real h)
 
__device__ Real3 GradW_Spline (Real3 d)
 
__device__ Real3 GradWh_Spline (Real3 d, Real h)
 
__device__ Real EOS_new (Real rho, Real V_max, Real Min_rho)
 dW * dist3 gives the gradiant of W3_Quadratic, where dist3 is the distance vector of the two particles, (dist3)a = pos_a - pos_b
 
__device__ Real Eos (Real rho, Real type)
 
__device__ Real InvEos (Real pw)
 
__device__ Real FerrariCi (Real rho)
 
__device__ Real3 Modify_Local_PosB (Real3 &b, Real3 a)
 
__device__ Real3 Distance (Real3 a, Real3 b)
 Distance. More...
 
__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)
 calcGridHash More...
 
__device__ uint calcGridHash (int3 gridPos)
 calcGridHash More...
 
__device__ void BCE_Vel_Acc (int i_idx, Real3 &myAcc, Real3 &V_prescribed, Real4 *sortedPosRad, int4 updatePortion, uint *gridMarkerIndexD, Real4 *velMassRigid_fsiBodies_D, Real3 *accRigid_fsiBodies_D, uint *rigidIdentifierD, Real3 *pos_fsi_fea_D, Real3 *vel_fsi_fea_D, Real3 *acc_fsi_fea_D, uint *FlexIdentifierD, const int numFlex1D, uint2 *CableElementsNodes, uint4 *ShellelementsNodes)
 
__device__ void grad_scalar (int i_idx, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, Real *G_i, Real4 *Scalar, Real3 &myGrad, uint *cellStart, uint *cellEnd)
 
__device__ void grad_vector (int i_idx, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, Real *G_i, Real3 *Vector, Real3 &myGradx, Real3 &myGrady, Real3 &myGradz, uint *cellStart, uint *cellEnd)
 
__global__ void calc_A_tensor (Real *A_tensor, Real *G_tensor, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, uint *cellStart, uint *cellEnd, const int numAllMarkers, volatile bool *isErrorD)
 
__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, const int numAllMarkers, volatile bool *isErrorD)
 
__global__ void calcRho_kernel (Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, uint *cellStart, uint *cellEnd, uint *mynumContact, const int numAllMarkers, volatile bool *isErrorD)
 
__global__ void calcNormalizedRho_kernel (Real4 *sortedPosRad, Real3 *sortedVelMas, Real4 *sortedRhoPreMu, Real *sumWij_inv, Real *G_i, Real3 *normals, Real *Color, uint *cellStart, uint *cellEnd, const int numAllMarkers, volatile bool *isErrorD)
 
__global__ void calcNormalizedRho_Gi_fillInMatrixIndices (Real4 *sortedPosRad, Real3 *sortedVelMas, Real4 *sortedRhoPreMu, Real *sumWij_inv, Real *G_i, Real3 *normals, uint *csrColInd, uint *numContacts, uint *cellStart, uint *cellEnd, const int numAllMarkers, volatile bool *isErrorD)
 
__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, const int numAllMarkers, volatile bool *isErrorD)
 
__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, int numAllMarkers, bool _3dvector, volatile bool *isErrorD)
 
__global__ void Update_AND_Calc_Res (Real4 *sortedRhoPreMu, Real3 *V_old, Real3 *V_new, Real *q_old, Real *q_new, Real *Residuals, const int numAllMarkers, bool _3dvector, volatile bool *isErrorD)
 
__global__ void Initialize_Variables (Real4 *sortedRhoPreMu, Real *p_old, Real3 *sortedVelMas, Real3 *V_new, const int numAllMarkers, volatile bool *isErrorD)
 
__global__ void UpdateDensity (Real3 *vis_vel, Real3 *XSPH_Vel, Real3 *new_vel, Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real *sumWij_inv, uint *cellStart, uint *cellEnd, uint numAllMarkers, volatile bool *isErrorD)
 
__global__ void Calc_HelperMarkers_normals (Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real3 *helpers_normal, int *myType, uint *cellStart, uint *cellEnd, uint *gridMarkerIndexD, int numAllMarkers, volatile bool *isErrorD)
 
__global__ void Calc_Splits_and_Merges (Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real3 *sortedVelMas, Real3 *helpers_normal, Real *A_L, Real3 *A_G, Real *A_f, const uint *csrColInd, const uint *numContacts, uint *splitMe, uint *MergeMe, int *myType, uint *gridMarkerIndexD, Real fineResolution, Real coarseResolution, int numAllMarkers, int limit, volatile bool *isErrorD)
 
__global__ void Split (Real4 *sortedPosRad, Real4 *sortedRhoPreMu, Real3 *sortedVelMas, Real3 *helpers_normal, Real *A_L, Real3 *A_G, Real *A_f, const uint *csrColInd, const uint *numContacts, uint *splitMe, uint *MergeMe, int *myType, uint *gridMarkerIndexD, Real fineResolution, Real coarseResolution, int numAllMarkers, int limit, volatile bool *isErrorD)
 
void SetIntegratorType (ChFluidDynamics::Integrator type)
 
__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.
 
__VECTOR_FUNCTIONS_DECL__ uint2 make_uint2 (unsigned int x, unsigned int y)
 
__VECTOR_FUNCTIONS_DECL__ uint3 make_uint3 (unsigned int x, unsigned int y, unsigned int z)
 
__VECTOR_FUNCTIONS_DECL__ uint4 make_uint4 (unsigned int x, unsigned int y, unsigned int z, unsigned int w)
 
__VECTOR_FUNCTIONS_DECL__ int2 make_int2 (int x, int y)
 
__VECTOR_FUNCTIONS_DECL__ int3 make_int3 (int x, int y, int z)
 
__VECTOR_FUNCTIONS_DECL__ int4 make_int4 (int x, int y, int z, int w)
 
__VECTOR_FUNCTIONS_DECL__ float2 make_float2 (float x, float y)
 
__VECTOR_FUNCTIONS_DECL__ float3 make_float3 (float x, float y, float z)
 
__VECTOR_FUNCTIONS_DECL__ float4 make_float4 (float x, float y, float z, float w)
 
__VECTOR_FUNCTIONS_DECL__ double2 make_double2 (double x, double y)
 
__VECTOR_FUNCTIONS_DECL__ double3 make_double3 (double x, double y, double z)
 
__VECTOR_FUNCTIONS_DECL__ double4 make_double4 (double x, double y, double z, double w)
 
__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__ Real2 Cables_ShapeFunctions (Real xi)
 
__host__ __device__ Real4 Shells_ShapeFunctions (Real x, Real y)
 
__host__ __device__ Real3 user_BC_U (Real3 Pos)
 

Variables

__constant__ fsi::SimParams paramsD
 
__constant__ fsi::NumberOfObjects numObjectsD
 

Function Documentation

__global__ void chrono::fsi::Calc_Splits_and_Merges ( Real4 *  sortedPosRad,
Real4 *  sortedRhoPreMu,
Real3 *  sortedVelMas,
Real3 *  helpers_normal,
Real *  A_L,
Real3 *  A_G,
Real *  A_f,
const uint *  csrColInd,
const uint *  numContacts,
uint *  splitMe,
uint *  MergeMe,
int *  myType,
uint *  gridMarkerIndexD,
Real  fineResolution,
Real  coarseResolution,
int  numAllMarkers,
int  limit,
volatile bool *  isErrorD 
)
Parameters
A_GLaplacian Operator matrix
A_fGradient Operator matrix
csrColIndFunction Operator matrix
__device__ uint chrono::fsi::calcGridHash ( int3  gridPos)

calcGridHash

See SDKCollisionSystem.cuh

__device__ int3 chrono::fsi::calcGridPos ( Real3  p)

calcGridHash

See SDKCollisionSystem.cuh

__device__ Real3 chrono::fsi::Distance ( Real3  a,
Real3  b 
)

Distance.

Distance between two particles, considering the periodic boundary condition

Parameters
aPosition of Particle A
bPosition of Particle B
Returns
Distance vector (distance in x, distance in y, distance in z)
__global__ void chrono::fsi::Split ( Real4 *  sortedPosRad,
Real4 *  sortedRhoPreMu,
Real3 *  sortedVelMas,
Real3 *  helpers_normal,
Real *  A_L,
Real3 *  A_G,
Real *  A_f,
const uint *  csrColInd,
const uint *  numContacts,
uint *  splitMe,
uint *  MergeMe,
int *  myType,
uint *  gridMarkerIndexD,
Real  fineResolution,
Real  coarseResolution,
int  numAllMarkers,
int  limit,
volatile bool *  isErrorD 
)
Parameters
A_GLaplacian Operator matrix
A_fGradient Operator matrix
csrColIndFunction Operator matrix