OpenMPCD
DeviceCode/GaussianRods.hpp
Go to the documentation of this file.
1 /**
2  * @file
3  * Defines CUDA Device code for OpenMPCD::CUDA::MPCFluid::GaussianRods
4  */
5 
6 #ifndef OPENMPCD_CUDA_MPCFLUID_DEVICECODE_GAUSSIANRODS_HPP
7 #define OPENMPCD_CUDA_MPCFLUID_DEVICECODE_GAUSSIANRODS_HPP
8 
9 #include <OpenMPCD/Types.hpp>
10 
11 namespace OpenMPCD
12 {
13 namespace CUDA
14 {
15 namespace MPCFluid
16 {
17 namespace DeviceCode
18 {
19  /**
20  * Streams the given Gaussian Rod by applying the velocity-Verlet algorithm.
21  * No boundary conditions are considered.
22  * @param[in] particle1ID The ID of the first particle; the partner is the one
23  * with this ID incremented by 1.
24  * @param[in,out] positions The array of MPC fluid particle positions.
25  * @param[in,out] velocities The array of MPC fluid particle velocities.
26  * @param[in] meanBondLength The mean bond length.
27  * @param[in] reducedSpringConstant The spring constant, divided by the mass of an
28  * individual spring constituent particle.
29  * @param[in] timestep The timestep for an individual velocity-Verlet step.
30  * @param[in] stepCount The number of velocity-Verlet steps to perform.
31  */
32  __device__ void streamGaussianRodVelocityVerlet(
33  const unsigned int particle1ID,
34  MPCParticlePositionType* const positions,
35  MPCParticleVelocityType* const velocities,
36  const FP meanBondLength,
37  const FP reducedSpringConstant,
38  const FP timestep,
39  const unsigned int stepCount);
40 
41  /**
42  * Streams the dumbbells by applying the velocity-Verlet algorithm.
43  * No boundary conditions are considered.
44  * @param[in] workUnitOffset The number of dumbbells to skip.
45  * @param[in,out] positions The array of MPC fluid particle positions.
46  * @param[in,out] velocities The array of MPC fluid particle velocities.
47  * @param[in] meanBondLength The mean bond length.
48  * @param[in] reducedSpringConstant The spring constant, divided by the mass of an
49  * individual spring constituent particle.
50  * @param[in] timestep The timestep for an individual velocity-Verlet step.
51  * @param[in] stepCount The number of velocity-Verlet steps to perform.
52  */
53  __global__ void streamGaussianRodsVelocityVerlet(
54  const unsigned int workUnitOffset,
55  MPCParticlePositionType* const positions,
56  MPCParticleVelocityType* const velocities,
57  const FP meanBondLength,
58  const FP reducedSpringConstant,
59  const FP timestep,
60  const unsigned int stepCount);
61 } //namespace DeviceCode
62 } //namespace MPCFluid
63 } //namespace CUDA
64 } //namespace OpenMPCD
65 
66 #endif
OpenMPCD::CUDA::MPCFluid::DeviceCode::streamGaussianRodsVelocityVerlet
__global__ void streamGaussianRodsVelocityVerlet(const unsigned int workUnitOffset, MPCParticlePositionType *const positions, MPCParticleVelocityType *const velocities, const FP meanBondLength, const FP reducedSpringConstant, const FP timestep, const unsigned int stepCount)
Streams the dumbbells by applying the velocity-Verlet algorithm.
Types.hpp
OpenMPCD::CUDA::MPCFluid::DeviceCode::streamGaussianRodVelocityVerlet
__device__ void streamGaussianRodVelocityVerlet(const unsigned int particle1ID, MPCParticlePositionType *const positions, MPCParticleVelocityType *const velocities, const FP meanBondLength, const FP reducedSpringConstant, const FP timestep, const unsigned int stepCount)
Streams the given Gaussian Rod by applying the velocity-Verlet algorithm.