CellGPU  0.8.0
GPU-accelerated simulations of cells
Functions
SPV Kernels

CUDA kernels and callers for the Voronoi2D class. More...

Functions

bool gpu_force_sets (Dscalar2 *d_points, Dscalar2 *d_AP, Dscalar2 *d_APpref, int2 *d_delSets, int *d_detOther, Dscalar2 *d_vc, Dscalar4 *d_vln, Dscalar2 *d_forceSets, int2 *d_nidx, Dscalar KA, Dscalar KP, int NeighIdxNum, Index2D &n_idx, gpubox &Box)
 Compute the contribution to the net force on vertex i from each of i's voronoi vertices. More...
 
bool gpu_sum_force_sets (Dscalar2 *d_forceSets, Dscalar2 *d_forces, int *d_nn, int N, Index2D &n_idx)
 Add up the force contributions to get the net force on each particle. More...
 
bool gpu_sum_force_sets_with_exclusions (Dscalar2 *d_forceSets, Dscalar2 *d_forces, Dscalar2 *d_external_forces, int *d_exes, int *d_nn, int N, Index2D &n_idx)
 Add up the force constributions, but in the condidtion where some exclusions exist. More...
 
bool gpu_VoronoiTension_force_sets (Dscalar2 *d_points, Dscalar2 *d_AP, Dscalar2 *d_APpref, int2 *d_delSets, int *d_detOther, Dscalar2 *d_vc, Dscalar4 *d_vln, Dscalar2 *d_forceSets, int2 *d_nidx, int *d_cellTypes, Dscalar *d_tensionMatrix, Index2D &cellTypeIndexer, Dscalar KA, Dscalar KP, int NeighIdxNum, Index2D &n_idx, gpubox &Box)
 Compute the contribution to the net force on vertex i from each of i's voronoi vertices with general tensions. More...
 
bool gpu_VoronoiSimpleTension_force_sets (Dscalar2 *d_points, Dscalar2 *d_AP, Dscalar2 *d_APpref, int2 *d_delSets, int *d_detOther, Dscalar2 *d_vc, Dscalar4 *d_vln, Dscalar2 *d_forceSets, int2 *d_nidx, int *d_cellTypes, Dscalar KA, Dscalar KP, Dscalar gamma, int NeighIdxNum, Index2D &n_idx, gpubox &Box)
 Compute the contribution to the net force on vertex i from each of i's voronoi vertices. More...
 
__global__ void gpu_sum_forces_kernel (const Dscalar2 *__restrict__ d_forceSets, Dscalar2 *__restrict__ d_forces, const int *__restrict__ d_nn, int N, Index2D n_idx)
 
__global__ void gpu_sum_forces_with_exclusions_kernel (const Dscalar2 *__restrict__ d_forceSets, Dscalar2 *__restrict__ d_forces, Dscalar2 *__restrict__ d_external_forces, const int *__restrict__ d_exes, const int *__restrict__ d_nn, int N, Index2D n_idx)
 
__global__ void gpu_force_sets_kernel (const Dscalar2 *__restrict__ d_points, const Dscalar2 *__restrict__ d_AP, const Dscalar2 *__restrict__ d_APpref, const int2 *__restrict__ d_delSets, const int *__restrict__ d_delOther, const Dscalar2 *__restrict__ d_vc, const Dscalar4 *__restrict__ d_vln, Dscalar2 *__restrict__ d_forceSets, const int2 *__restrict__ d_nidx, Dscalar KA, Dscalar KP, int computations, Index2D n_idx, gpubox Box)
 
__global__ void gpu_VoronoiTension_force_sets_kernel (const Dscalar2 *__restrict__ d_points, const Dscalar2 *__restrict__ d_AP, const Dscalar2 *__restrict__ d_APpref, const int2 *__restrict__ d_delSets, const int *__restrict__ d_delOther, const Dscalar2 *__restrict__ d_vc, const Dscalar4 *__restrict__ d_vln, Dscalar2 *__restrict__ d_forceSets, const int2 *__restrict__ d_nidx, const int *__restrict__ d_cellTypes, const Dscalar *__restrict__ d_tensionMatrix, Index2D cellTypeIndexer, Dscalar KA, Dscalar KP, int computations, Index2D n_idx, gpubox Box)
 the force on a particle is decomposable into the force contribution from each of its voronoi vertices...calculate those sets of forces with an additional tension term between cells of different type
 
__global__ void gpu_VoronoiSimpleTension_force_sets_kernel (const Dscalar2 *__restrict__ d_points, const Dscalar2 *__restrict__ d_AP, const Dscalar2 *__restrict__ d_APpref, const int2 *__restrict__ d_delSets, const int *__restrict__ d_delOther, const Dscalar2 *__restrict__ d_vc, const Dscalar4 *__restrict__ d_vln, Dscalar2 *__restrict__ d_forceSets, const int2 *__restrict__ d_nidx, const int *__restrict__ d_cellTypes, Dscalar KA, Dscalar KP, Dscalar gamma, int computations, Index2D n_idx, gpubox Box)
 the force on a particle is decomposable into the force contribution from each of its voronoi vertices...calculate those sets of forces with an additional tension term between cells of different type
 

Detailed Description

CUDA kernels and callers for the Voronoi2D class.

Function Documentation

◆ gpu_force_sets()

bool gpu_force_sets ( Dscalar2 *  d_points,
Dscalar2 *  d_AP,
Dscalar2 *  d_APpref,
int2 *  d_delSets,
int *  d_detOther,
Dscalar2 *  d_vc,
Dscalar4 *  d_vln,
Dscalar2 *  d_forceSets,
int2 *  d_nidx,
Dscalar  KA,
Dscalar  KP,
int  NeighIdxNum,
Index2D n_idx,
gpubox Box 
)

Compute the contribution to the net force on vertex i from each of i's voronoi vertices.

Call the kernel to compute the force sets.

Referenced by VoronoiQuadraticEnergy::computeVoronoiForceSetsGPU().

◆ gpu_sum_force_sets()

bool gpu_sum_force_sets ( Dscalar2 *  d_forceSets,
Dscalar2 *  d_forces,
int *  d_nn,
int  N,
Index2D n_idx 
)

Add up the force contributions to get the net force on each particle.

call the kernel to add up the forces

Referenced by VoronoiQuadraticEnergy::sumForceSets().

◆ gpu_sum_force_sets_with_exclusions()

bool gpu_sum_force_sets_with_exclusions ( Dscalar2 *  d_forceSets,
Dscalar2 *  d_forces,
Dscalar2 *  d_external_forces,
int *  d_exes,
int *  d_nn,
int  N,
Index2D n_idx 
)

Add up the force constributions, but in the condidtion where some exclusions exist.

call the kernel to add up forces with particle exclusions

Referenced by VoronoiQuadraticEnergy::sumForceSetsWithExclusions().

◆ gpu_VoronoiTension_force_sets()

bool gpu_VoronoiTension_force_sets ( Dscalar2 *  d_points,
Dscalar2 *  d_AP,
Dscalar2 *  d_APpref,
int2 *  d_delSets,
int *  d_detOther,
Dscalar2 *  d_vc,
Dscalar4 *  d_vln,
Dscalar2 *  d_forceSets,
int2 *  d_nidx,
int *  d_cellTypes,
Dscalar *  d_tensionMatrix,
Index2D cellTypeIndexer,
Dscalar  KA,
Dscalar  KP,
int  NeighIdxNum,
Index2D n_idx,
gpubox Box 
)

Compute the contribution to the net force on vertex i from each of i's voronoi vertices with general tensions.

Call the kernel to compute force sets with a generic matrix of surface tensions between types.

Referenced by VoronoiQuadraticEnergyWithTension::computeVoronoiTensionForceSetsGPU().

◆ gpu_VoronoiSimpleTension_force_sets()

bool gpu_VoronoiSimpleTension_force_sets ( Dscalar2 *  d_points,
Dscalar2 *  d_AP,
Dscalar2 *  d_APpref,
int2 *  d_delSets,
int *  d_detOther,
Dscalar2 *  d_vc,
Dscalar4 *  d_vln,
Dscalar2 *  d_forceSets,
int2 *  d_nidx,
int *  d_cellTypes,
Dscalar  KA,
Dscalar  KP,
Dscalar  gamma,
int  NeighIdxNum,
Index2D n_idx,
gpubox Box 
)

Compute the contribution to the net force on vertex i from each of i's voronoi vertices.

Call the kernel to compute force sets with additional (uniform) tension terms.

Referenced by VoronoiQuadraticEnergyWithTension::computeVoronoiSimpleTensionForceSetsGPU().

◆ gpu_sum_forces_kernel()

__global__ void gpu_sum_forces_kernel ( const Dscalar2 *__restrict__  d_forceSets,
Dscalar2 *__restrict__  d_forces,
const int *__restrict__  d_nn,
int  N,
Index2D  n_idx 
)

Each cell has a force contribution due to the derivative of the energy with respect to each of its voronoi vertices... add them up to get the force per cell.

◆ gpu_sum_forces_with_exclusions_kernel()

__global__ void gpu_sum_forces_with_exclusions_kernel ( const Dscalar2 *__restrict__  d_forceSets,
Dscalar2 *__restrict__  d_forces,
Dscalar2 *__restrict__  d_external_forces,
const int *__restrict__  d_exes,
const int *__restrict__  d_nn,
int  N,
Index2D  n_idx 
)

add up force sets, as above, but keep track of exclusions

◆ gpu_force_sets_kernel()

__global__ void gpu_force_sets_kernel ( const Dscalar2 *__restrict__  d_points,
const Dscalar2 *__restrict__  d_AP,
const Dscalar2 *__restrict__  d_APpref,
const int2 *__restrict__  d_delSets,
const int *__restrict__  d_delOther,
const Dscalar2 *__restrict__  d_vc,
const Dscalar4 *__restrict__  d_vln,
Dscalar2 *__restrict__  d_forceSets,
const int2 *__restrict__  d_nidx,
Dscalar  KA,
Dscalar  KP,
int  computations,
Index2D  n_idx,
gpubox  Box 
)

the force on a particle is decomposable into the force contribution from each of its voronoi vertices...calculate those sets of forces