Open Qmin
0.8.0
GPU-accelerated Q-tensor-based liquid crystal simulations
|
CUDA kernels and callers for force calculations. More...
Functions | |
__global__ void | gpu_lattice_spin_force_nn_kernel (dVec *d_force, dVec *d_spins, Index3D latticeIndex, scalar J, int N, int L, bool zeroForce) |
bool | gpu_lattice_spin_force_nn (dVec *d_force, dVec *d_spins, Index3D latticeIndex, scalar J, int N, bool zeroForce, int maxBlockSize) |
__device__ void | gpu_get_six_neighbors (int3 &target, int &ixd, int &ixu, int &iyd, int &iyu, int &izd, int &izu, Index3D &latticeIndex, int3 &latticeSizes) |
__device__ void | gpu_phase_force (dVec &qCurrent, scalar &a, scalar &b, scalar &c, dVec &force) |
__global__ void | gpu_qTensor_computeBoundaryForcesGPU_kernel (dVec *d_force, dVec *d_spins, int *d_types, boundaryObject *d_bounds, Index3D latticeIndex, int N, bool zeroForce) |
__global__ void | gpu_qTensor_firstDerivatives_kernel (cubicLatticeDerivativeVector *d_derivatives, dVec *d_spins, int *d_types, int *latticeNeighbors, Index2D neighborIndex, int N) |
__global__ void | gpu_qTensor_computeObjectForceFromStresses_kernel (int *sites, int *latticeTypes, int *latticeNeighbors, Matrix3x3 *stress, scalar3 *objectForces, Index2D neighborIndex, int nSites) |
__global__ void | gpu_energyPerSite_kernel (scalar *energyPerSite, dVec *Qtensors, int *latticeTypes, boundaryObject *bounds, int *d_latticeNeighbors, Index2D neighborIndex, scalar a, scalar b, scalar c, scalar L1, scalar L2, scalar L3, scalar L4, scalar L6, bool computeEfieldContribution, bool computeHfieldContribution, scalar epsilon, scalar epsilon0, scalar deltaEpsilon, scalar3 Efield, scalar Chi, scalar mu0, scalar deltaChi, scalar3 Hfield, int N) |
__global__ void | gpu_qTensor_oneConstantForce_kernel (dVec *d_force, dVec *d_spins, int *d_types, int *d_latticeNeighbors, Index2D neighborIndex, scalar a, scalar b, scalar c, scalar L1, int N, bool zeroForce) |
__global__ void | gpu_qTensor_multiConstantForce_kernel (dVec *d_force, dVec *d_spins, int *d_types, cubicLatticeDerivativeVector *d_derivatives, int *d_latticeNeighbors, Index2D neighborIndex, scalar a, scalar b, scalar c, scalar L1, scalar L2, scalar L3, scalar L4, scalar L6, int N, bool zeroForce) |
__global__ void | gpu_qTensor_uniformFieldForcekernel (dVec *d_force, int *d_types, int N, scalar3 field, scalar anisotropicSusceptibility, scalar vacuumPermeability, bool zeroForce) |
bool | gpu_qTensor_computeObjectForceFromStresses (int *sites, int *latticeTypes, int *latticeNeighbors, Matrix3x3 *stress, scalar3 *objectForces, Index2D neighborIndex, int nSites, int maxBlockSize) |
bool | gpu_qTensor_computeBoundaryForcesGPU (dVec *d_force, dVec *d_spins, int *d_types, boundaryObject *d_bounds, Index3D latticeIndex, int N, bool zeroForce, int maxBlockSize) |
bool | gpu_qTensor_firstDerivatives (cubicLatticeDerivativeVector *d_derivatives, dVec *d_spins, int *d_types, int *latticeNeighbors, Index2D neighborIndex, int N, int maxBlockSize) |
bool | gpu_qTensor_oneConstantForce (dVec *d_force, dVec *d_spins, int *d_types, int *d_latticeNeighbors, Index2D neighborIndex, scalar A, scalar B, scalar C, scalar L, int N, bool zeroForce, int maxBlockSize) |
bool | gpu_qTensor_multiConstantForce (dVec *d_force, dVec *d_spins, int *d_types, cubicLatticeDerivativeVector *d_derivatives, int *d_latticeNeighbors, Index2D neighborIndex, scalar A, scalar B, scalar C, scalar L1, scalar L2, scalar L3, scalar L4, scalar L6, int N, bool zeroForce, int maxBlockSize) |
bool | gpu_qTensor_computeUniformFieldForcesGPU (dVec *d_force, int *d_types, int N, scalar3 field, scalar anisotropicSusceptibility, scalar vacuumPermeability, bool zeroOutForce, int maxBlockSize) |
bool | gpu_computeAllEnergyTerms (scalar *energyPerSite, dVec *Qtensors, int *latticeTypes, boundaryObject *bounds, int *d_latticeNeighbors, Index2D neighborIndex, scalar a, scalar b, scalar c, scalar L1, scalar L2, scalar L3, scalar L4, scalar L6, bool computeEfieldContribution, bool computeHfieldContribution, scalar epsilon, scalar epsilon0, scalar deltaEpsilon, scalar3 Efield, scalar Chi, scalar mu0, scalar deltaChi, scalar3 Hfield, int N) |
CUDA kernels and callers for force calculations.
__global__ void gpu_lattice_spin_force_nn_kernel | ( | dVec * | d_force, |
dVec * | d_spins, | ||
Index3D | latticeIndex, | ||
scalar | J, | ||
int | N, | ||
int | L, | ||
bool | zeroForce | ||
) |
References idx, Index3D::inverseIndex(), make_dVec(), and wrap().
bool gpu_lattice_spin_force_nn | ( | dVec * | d_force, |
dVec * | d_spins, | ||
Index3D | latticeIndex, | ||
scalar | J, | ||
int | N, | ||
bool | zeroForce, | ||
int | maxBlockSize | ||
) |
References Index3D::getSizes(), and HANDLE_ERROR.
Referenced by baseLatticeForce::computeForceGPU().
__device__ void gpu_get_six_neighbors | ( | int3 & | target, |
int & | ixd, | ||
int & | ixu, | ||
int & | iyd, | ||
int & | iyu, | ||
int & | izd, | ||
int & | izu, | ||
Index3D & | latticeIndex, | ||
int3 & | latticeSizes | ||
) |
References wrap().
Referenced by gpu_qTensor_computeBoundaryForcesGPU_kernel().
__device__ void gpu_phase_force | ( | dVec & | qCurrent, |
scalar & | a, | ||
scalar & | b, | ||
scalar & | c, | ||
dVec & | force | ||
) |
References derivativeTrQ2(), derivativeTrQ2Squared(), and derivativeTrQ3().
Referenced by gpu_qTensor_multiConstantForce_kernel(), and gpu_qTensor_oneConstantForce_kernel().
__global__ void gpu_qTensor_computeBoundaryForcesGPU_kernel | ( | dVec * | d_force, |
dVec * | d_spins, | ||
int * | d_types, | ||
boundaryObject * | d_bounds, | ||
Index3D | latticeIndex, | ||
int | N, | ||
bool | zeroForce | ||
) |
References computeBoundaryForce(), Index3D::getSizes(), gpu_get_six_neighbors(), idx, and Index3D::inverseIndex().
__global__ void gpu_qTensor_firstDerivatives_kernel | ( | cubicLatticeDerivativeVector * | d_derivatives, |
dVec * | d_spins, | ||
int * | d_types, | ||
int * | latticeNeighbors, | ||
Index2D | neighborIndex, | ||
int | N | ||
) |
__global__ void gpu_qTensor_computeObjectForceFromStresses_kernel | ( | int * | sites, |
int * | latticeTypes, | ||
int * | latticeNeighbors, | ||
Matrix3x3 * | stress, | ||
scalar3 * | objectForces, | ||
Index2D | neighborIndex, | ||
int | nSites | ||
) |
References idx, make_scalar3(), and scalar3.
__global__ void gpu_energyPerSite_kernel | ( | scalar * | energyPerSite, |
dVec * | Qtensors, | ||
int * | latticeTypes, | ||
boundaryObject * | bounds, | ||
int * | d_latticeNeighbors, | ||
Index2D | neighborIndex, | ||
scalar | a, | ||
scalar | b, | ||
scalar | c, | ||
scalar | L1, | ||
scalar | L2, | ||
scalar | L3, | ||
scalar | L4, | ||
scalar | L6, | ||
bool | computeEfieldContribution, | ||
bool | computeHfieldContribution, | ||
scalar | epsilon, | ||
scalar | epsilon0, | ||
scalar | deltaEpsilon, | ||
scalar3 | Efield, | ||
scalar | Chi, | ||
scalar | mu0, | ||
scalar | deltaChi, | ||
scalar3 | Hfield, | ||
int | N | ||
) |
References computeBoundaryEnergy(), idx, scalar, TrQ2(), TrQ2Squared(), and TrQ3().
__global__ void gpu_qTensor_oneConstantForce_kernel | ( | dVec * | d_force, |
dVec * | d_spins, | ||
int * | d_types, | ||
int * | d_latticeNeighbors, | ||
Index2D | neighborIndex, | ||
scalar | a, | ||
scalar | b, | ||
scalar | c, | ||
scalar | L1, | ||
int | N, | ||
bool | zeroForce | ||
) |
References lcForce::boundaryL1Force(), lcForce::bulkL1Force(), gpu_phase_force(), and idx.
__global__ void gpu_qTensor_multiConstantForce_kernel | ( | dVec * | d_force, |
dVec * | d_spins, | ||
int * | d_types, | ||
cubicLatticeDerivativeVector * | d_derivatives, | ||
int * | d_latticeNeighbors, | ||
Index2D | neighborIndex, | ||
scalar | a, | ||
scalar | b, | ||
scalar | c, | ||
scalar | L1, | ||
scalar | L2, | ||
scalar | L3, | ||
scalar | L4, | ||
scalar | L6, | ||
int | N, | ||
bool | zeroForce | ||
) |
References lcForce::boundaryL1Force(), lcForce::boundaryL2Force(), lcForce::boundaryL3Force(), lcForce::boundaryL4Force(), lcForce::boundaryL6Force(), lcForce::bulkL1Force(), lcForce::bulkL2Force(), lcForce::bulkL3Force(), lcForce::bulkL4Force(), lcForce::bulkL6Force(), lcForce::getBoundaryCase(), gpu_phase_force(), and idx.
bool gpu_qTensor_computeObjectForceFromStresses | ( | int * | sites, |
int * | latticeTypes, | ||
int * | latticeNeighbors, | ||
Matrix3x3 * | stress, | ||
scalar3 * | objectForces, | ||
Index2D | neighborIndex, | ||
int | nSites, | ||
int | maxBlockSize | ||
) |
References HANDLE_ERROR.
Referenced by landauDeGennesLC::computeObjectForces().
bool gpu_qTensor_computeBoundaryForcesGPU | ( | dVec * | d_force, |
dVec * | d_spins, | ||
int * | d_types, | ||
boundaryObject * | d_bounds, | ||
Index3D | latticeIndex, | ||
int | N, | ||
bool | zeroForce, | ||
int | maxBlockSize | ||
) |
References HANDLE_ERROR.
Referenced by landauDeGennesLC::computeBoundaryForcesGPU().
bool gpu_qTensor_firstDerivatives | ( | cubicLatticeDerivativeVector * | d_derivatives, |
dVec * | d_spins, | ||
int * | d_types, | ||
int * | latticeNeighbors, | ||
Index2D | neighborIndex, | ||
int | N, | ||
int | maxBlockSize | ||
) |
References HANDLE_ERROR.
Referenced by landauDeGennesLC::computeFirstDerivatives().
bool gpu_qTensor_oneConstantForce | ( | dVec * | d_force, |
dVec * | d_spins, | ||
int * | d_types, | ||
int * | d_latticeNeighbors, | ||
Index2D | neighborIndex, | ||
scalar | A, | ||
scalar | B, | ||
scalar | C, | ||
scalar | L, | ||
int | N, | ||
bool | zeroForce, | ||
int | maxBlockSize | ||
) |
References HANDLE_ERROR, and scalar.
Referenced by landauDeGennesLC::computeForceGPU().
bool gpu_qTensor_multiConstantForce | ( | dVec * | d_force, |
dVec * | d_spins, | ||
int * | d_types, | ||
cubicLatticeDerivativeVector * | d_derivatives, | ||
int * | d_latticeNeighbors, | ||
Index2D | neighborIndex, | ||
scalar | A, | ||
scalar | B, | ||
scalar | C, | ||
scalar | L1, | ||
scalar | L2, | ||
scalar | L3, | ||
scalar | L4, | ||
scalar | L6, | ||
int | N, | ||
bool | zeroForce, | ||
int | maxBlockSize | ||
) |
References HANDLE_ERROR, and scalar.
Referenced by landauDeGennesLC::computeForceGPU().
bool gpu_qTensor_computeUniformFieldForcesGPU | ( | dVec * | d_force, |
int * | d_types, | ||
int | N, | ||
scalar3 | field, | ||
scalar | anisotropicSusceptibility, | ||
scalar | vacuumPermeability, | ||
bool | zeroOutForce, | ||
int | maxBlockSize | ||
) |
References HANDLE_ERROR.
Referenced by landauDeGennesLC::computeEorHFieldForcesGPU().
bool gpu_computeAllEnergyTerms | ( | scalar * | energyPerSite, |
dVec * | Qtensors, | ||
int * | latticeTypes, | ||
boundaryObject * | bounds, | ||
int * | d_latticeNeighbors, | ||
Index2D | neighborIndex, | ||
scalar | a, | ||
scalar | b, | ||
scalar | c, | ||
scalar | L1, | ||
scalar | L2, | ||
scalar | L3, | ||
scalar | L4, | ||
scalar | L6, | ||
bool | computeEfieldContribution, | ||
bool | computeHfieldContribution, | ||
scalar | epsilon, | ||
scalar | epsilon0, | ||
scalar | deltaEpsilon, | ||
scalar3 | Efield, | ||
scalar | Chi, | ||
scalar | mu0, | ||
scalar | deltaChi, | ||
scalar3 | Hfield, | ||
int | N | ||
) |
References HANDLE_ERROR.
Referenced by landauDeGennesLC::computeEnergyGPU().