OpenMPCD
Namespaces | Functions
CUDA/DeviceCode/Simulation.hpp File Reference
#include <OpenMPCD/CUDA/Types.hpp>
#include <OpenMPCD/Types.hpp>
#include <OpenMPCD/Vector3D.hpp>
Include dependency graph for CUDA/DeviceCode/Simulation.hpp:

Go to the source code of this file.

Namespaces

 OpenMPCD::CUDA
 Namespace for simulations using CUDA.
 
 OpenMPCD::CUDA::DeviceCode
 Contains CUDA Device code.
 

Functions

__device__ bool OpenMPCD::CUDA::DeviceCode::isInPrimarySimulationVolume (const Vector3D< MPCParticlePositionType > &position)
 Returns whether the given position lies within the primary simulation volume. More...
 
__device__ unsigned int OpenMPCD::CUDA::DeviceCode::getCollisionCellIndex (const Vector3D< MPCParticlePositionType > &position)
 Returns the collision cell index for the given position. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::sortParticlesIntoCollisionCellsLeesEdwards (const unsigned int workUnitOffset, const unsigned int particleCount, const MPCParticlePositionType *const gridShift_, const FP mpcTime, const MPCParticlePositionType *const positions, MPCParticleVelocityType *const velocities, MPCParticleVelocityType *const velocityCorrections, unsigned int *const collisionCellIndices)
 Sorts the MPC particles into the collision cells, temporarily applying Lees-Edwards boundary conditions. More...
 
__device__ void OpenMPCD::CUDA::DeviceCode::sortIntoCollisionCellsLeesEdwards (const unsigned int particleID, const MPCParticlePositionType *const gridShift_, const FP mpcTime, const MPCParticlePositionType *const positions, MPCParticleVelocityType *const velocities, MPCParticleVelocityType *const velocityCorrections, unsigned int *const collisionCellIndices)
 Sorts the given particle into the collision cells, temporarily applying Lees-Edwards boundary conditions. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::collisionCellContributions (const unsigned int workUnitOffset, const unsigned int particleCount, const MPCParticleVelocityType *const velocities, const unsigned int *const collisionCellIndices, MPCParticleVelocityType *const collisionCellMomenta, FP *const collisionCellMasses, const FP particleMass)
 Computes the collision cell mass and momentum contributions by the given particles. More...
 
__device__ Vector3D< MPCParticleVelocityType > OpenMPCD::CUDA::DeviceCode::getCollisionCellCenterOfMassVelocity (const unsigned int collisionCellIndex, const MPCParticleVelocityType *const collisionCellMomenta, const FP *const collisionCellMasses)
 Returns the center-of-mass velocity of a collision cell. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::resetCollisionCellData (const unsigned int workUnitOffset, const unsigned int collisionCellCount, unsigned int *const collisionCellParticleCounts, MPCParticleVelocityType *const collisionCellMomenta, FP *const collisionCellFrameInternalKineticEnergies, FP *const collisionCellMasses)
 Resets the collision cell data buffers. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::generateGridShiftVector (MPCParticlePositionType *const gridShift, const FP gridShiftScale, GPURNG *const rngs)
 Generates a new random grid shift vector. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::generateCollisionCellRotationAxes (const unsigned int workUnitOffset, const unsigned int collisionCellCount, FP *const collisionCellRotationAxes, GPURNG *const rngs)
 Generates new rotation axes for the collision cells. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::collisionCellStochasticRotationStep1 (const unsigned int workUnitOffset, const unsigned int particleCount, MPCParticleVelocityType *const velocities, const FP particleMass, const unsigned int *const collisionCellIndices, const MPCParticleVelocityType *const collisionCellMomenta, const FP *const collisionCellMasses, const MPCParticlePositionType *const collisionCellRotationAxes, FP *const collisionCellFrameInternalKineticEnergies, unsigned int *const collisionCellParticleCounts)
 Applies the first step of the SRD rotation to the given particles. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::generateCollisionCellMBSFactors (const unsigned int workUnitOffset, const unsigned int collisionCellCount, const FP *const collisionCellFrameInternalKineticEnergies, unsigned int *const collisionCellParticleCounts, FP *const collisionCellRelativeVelocityScalings, const FP bulkThermostatTargetkT, GPURNG *const rngs)
 Generates Maxwell-Boltzmann-Scaling factors for the collision cells. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::collisionCellStochasticRotationStep2 (const unsigned int workUnitOffset, const unsigned int particleCount, MPCParticleVelocityType *const velocities, const unsigned int *const collisionCellIndices, const MPCParticleVelocityType *const collisionCellMomenta, const FP *const collisionCellMasses, const FP *const collisionCellVelocityScalings)
 Applies the second step of the SRD rotation to the given particles. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::undoLeesEdwardsVelocityCorrections (const unsigned int workUnitOffset, const unsigned int particleCount, MPCParticleVelocityType *const velocities, const MPCParticleVelocityType *const velocityCorrections)
 Undoes the velocity corrections applied by sortIntoCollisionCellsLeesEdwards. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::constructGPURNGs (const std::size_t count, GPURNG *const location, const unsigned long long seed)
 Sets up instances of GPURNG in the specified memory location. More...
 
__global__ void OpenMPCD::CUDA::DeviceCode::destroyGPURNGs (const std::size_t count, GPURNG *const location)
 Destroys instances of GPURNG in the specified memory location. More...
 

Detailed Description

Defines CUDA Device code for OpenMPCD::CUDA::Simulation

Definition in file CUDA/DeviceCode/Simulation.hpp.