Base class to calculate force between SPH particles.
This is an abstract class that defines an interface that various SPH methods should implement. The class owns a collision system fsi which takes care of GPU based proximity computation of the particles. It also holds a pointer to external data of SPH particles, proximity data, parameters, and numbers.
|
| ChFsiForce (std::shared_ptr< ChBce > otherBceWorker, std::shared_ptr< SphMarkerDataD > otherSortedSphMarkersD, std::shared_ptr< ProximityDataD > otherMarkersProximityD, std::shared_ptr< FsiData > otherFsiData, std::shared_ptr< SimParams > params, std::shared_ptr< ChCounters > numObjects, bool verb) |
| Base constructor for the ChFsiForce class. More...
|
|
virtual | ~ChFsiForce () |
| Destructor of the ChFsiForce.
|
|
virtual void | ForceSPH (std::shared_ptr< SphMarkerDataD > otherSortedSphMarkersD, std::shared_ptr< FsiBodyStateD > fsiBodyStateD, std::shared_ptr< FsiMeshStateD > fsiMesh1DStateD, std::shared_ptr< FsiMeshStateD > fsiMesh2DStateD, Real time, bool firstHalfStep)=0 |
| Function to calculate forces on SPH particles. More...
|
|
virtual void | Initialize () |
| Synchronize the copy of the data (parameters and number of objects) between device (GPU) and host (CPU). More...
|
|
void | SetLinearSolver (SolverType type) |
| Function to set the linear solver type for the solver implemented using the ISPH method (ChFsiForceI2SPH).
|
|
| ChFsiBase (std::shared_ptr< SimParams > params, std::shared_ptr< ChCounters > numObjects) |
| Constructor for the ChFsiBase class. More...
|
|
virtual | ~ChFsiBase () |
| Destructor of the ChFsiBase class.
|
|
|
static void | CopySortedToOriginal_Invasive_R3 (thrust::device_vector< Real3 > &original, thrust::device_vector< Real3 > &sorted, const thrust::device_vector< uint > &gridMarkerIndex) |
| Copy sorted data into original data (real3). More...
|
|
static void | CopySortedToOriginal_NonInvasive_R3 (thrust::device_vector< Real3 > &original, const thrust::device_vector< Real3 > &sorted, const thrust::device_vector< uint > &gridMarkerIndex) |
| Copy sorted data into original data (real3). More...
|
|
static void | CopySortedToOriginal_Invasive_R4 (thrust::device_vector< Real4 > &original, thrust::device_vector< Real4 > &sorted, const thrust::device_vector< uint > &gridMarkerIndex) |
| Copy sorted data into original data (real4). More...
|
|
static void | CopySortedToOriginal_NonInvasive_R4 (thrust::device_vector< Real4 > &original, thrust::device_vector< Real4 > &sorted, const thrust::device_vector< uint > &gridMarkerIndex) |
| Copy sorted data into original data (real4). More...
|
|
static void | computeGridSize (uint n, uint blockSize, uint &numBlocks, uint &numThreads) |
| Compute number of blocks and threads for calculation on GPU. More...
|
|
static void chrono::fsi::ChFsiForce::CopySortedToOriginal_Invasive_R3 |
( |
thrust::device_vector< Real3 > & |
original, |
|
|
thrust::device_vector< Real3 > & |
sorted, |
|
|
const thrust::device_vector< uint > & |
gridMarkerIndex |
|
) |
| |
|
static |
Copy sorted data into original data (real3).
This function copies the data that are sorted in the collision system, into the original data, where data is real3. The class is invasive, meaning that the sorted data will be modified (and will be equivalent to the original). Therefore, this function should be used whenever sorted data is not needed, but efficiency is preferred.
static void chrono::fsi::ChFsiForce::CopySortedToOriginal_Invasive_R4 |
( |
thrust::device_vector< Real4 > & |
original, |
|
|
thrust::device_vector< Real4 > & |
sorted, |
|
|
const thrust::device_vector< uint > & |
gridMarkerIndex |
|
) |
| |
|
static |
Copy sorted data into original data (real4).
This function copies the data that are sorted in the collision system, into the original data, where data is real4. The class is invasive, meaning that the sorted data will be modified (and will be equivalent to the original). Therefore, this function should be used whenever sorted data is not needed, but efficiency is preferred.