Go to the documentation of this file.
7 #ifndef OPENMPCD_CUDA_MPCSOLUTE_IMPLEMENTATIONDETAILS_STARPOLYMERS_HPP
8 #define OPENMPCD_CUDA_MPCSOLUTE_IMPLEMENTATIONDETAILS_STARPOLYMERS_HPP
25 namespace ImplementationDetails
47 const std::size_t armCountPerStar,
48 const std::size_t particleCountPerArm,
49 const bool hasMagneticParticles);
65 const std::size_t starCount,
66 const std::size_t armCountPerStar,
67 const std::size_t particleCountPerArm,
68 const bool hasMagneticParticles);
117 const std::size_t particleID,
118 const std::size_t starCount,
119 const std::size_t armCountPerStar,
120 const std::size_t particleCountPerArm,
121 const bool hasMagneticParticles,
122 std::size_t*
const starID,
123 bool*
const isCoreParticle,
124 std::size_t*
const armID,
125 bool*
const isMagneticParticle,
126 std::size_t*
const particleIDInArm);
149 const std::size_t particleID,
150 const std::size_t starCount,
151 const std::size_t armCountPerStar,
152 const std::size_t particleCountPerArm,
153 const bool hasMagneticParticles);
179 const std::size_t particleID1,
180 const std::size_t particleID2,
181 const std::size_t starCount,
182 const std::size_t armCountPerStar,
183 const std::size_t particleCountPerArm,
184 const bool hasMagneticParticles);
242 const T epsilon_core,
const T epsilon_arm,
const T epsilon_magnetic,
243 const T sigma_core,
const T sigma_arm,
const T sigma_magnetic,
244 const T D_core,
const T D_arm,
const T D_magnetic,
245 const T magneticPrefactor,
const Vector3D<T> dipoleOrientation,
250 MagneticDipoleDipoleInteraction_ConstantIdenticalDipoles<T>***
const
280 MagneticDipoleDipoleInteraction_ConstantIdenticalDipoles<T>**
const
321 const std::size_t particleID1,
322 const std::size_t particleID2,
325 const std::size_t starCount,
326 const std::size_t armCountPerStar,
327 const std::size_t particleCountPerArm,
328 const bool hasMagneticParticles,
333 MagneticDipoleDipoleInteraction_ConstantIdenticalDipoles<T>**
const
344 #endif //OPENMPCD_CUDA_MPCSOLUTE_IMPLEMENTATIONDETAILS_STARPOLYMERS_HPP
OPENMPCD_CUDA_HOST_AND_DEVICE ParticleType::Enum getParticleType(const std::size_t particleID, const std::size_t starCount, const std::size_t armCountPerStar, const std::size_t particleCountPerArm, const bool hasMagneticParticles)
Returns the particle type that corresponds to the given ID.
A generalization of the Weeks-Chandler-Andersen (WCA) potential.
Represents a vector whose data is stored elsewhere.
OPENMPCD_CUDA_HOST_AND_DEVICE std::size_t getParticleCountPerStar(const std::size_t armCountPerStar, const std::size_t particleCountPerArm, const bool hasMagneticParticles)
Returns the total number of particles per star.
void createInteractionsOnDevice(const T epsilon_core, const T epsilon_arm, const T epsilon_magnetic, const T sigma_core, const T sigma_arm, const T sigma_magnetic, const T D_core, const T D_arm, const T D_magnetic, const T magneticPrefactor, const Vector3D< T > dipoleOrientation, PairPotentials::WeeksChandlerAndersen_DistanceOffset< T > ***const WCAPotentials, PairPotentials::FENE< T > ***const FENEPotentials, PairPotentials::MagneticDipoleDipoleInteraction_ConstantIdenticalDipoles< T > ***const magneticPotential)
Constructs the necessary interaction potentials in memory.
Enum
Enumerates particle types.
#define OPENMPCD_CUDA_HOST_AND_DEVICE
Denotes a function to be callable both from the Host and from a CUDA Device.
OPENMPCD_CUDA_HOST_AND_DEVICE std::size_t getParticleCount(const std::size_t starCount, const std::size_t armCountPerStar, const std::size_t particleCountPerArm, const bool hasMagneticParticles)
Returns the total number of particles in a StarPolymers instance.
OPENMPCD_CUDA_HOST_AND_DEVICE std::size_t getParticleTypeCombinationIndex(const ParticleType::Enum type1, const ParticleType::Enum type2)
Returns a different integer, in a consecutive range starting from 0, for every combination of particl...
OPENMPCD_CUDA_HOST_AND_DEVICE void getParticleStructureIndices(const std::size_t particleID, const std::size_t starCount, const std::size_t armCountPerStar, const std::size_t particleCountPerArm, const bool hasMagneticParticles, std::size_t *const starID, bool *const isCoreParticle, std::size_t *const armID, bool *const isMagneticParticle, std::size_t *const particleIDInArm)
Computes the structure indices of the particle ID given.
OPENMPCD_CUDA_HOST_AND_DEVICE bool particlesAreBonded(const std::size_t particleID1, const std::size_t particleID2, const std::size_t starCount, const std::size_t armCountPerStar, const std::size_t particleCountPerArm, const bool hasMagneticParticles)
Returns whether the two given particles are bonded.
Class representing star polymers.
const OPENMPCD_CUDA_HOST_AND_DEVICE Vector3D< T > computeForceOnParticle1DueToParticle2(const std::size_t particleID1, const std::size_t particleID2, const RemotelyStoredVector< const T > &position1, const RemotelyStoredVector< const T > &position2, const std::size_t starCount, const std::size_t armCountPerStar, const std::size_t particleCountPerArm, const bool hasMagneticParticles, PairPotentials::WeeksChandlerAndersen_DistanceOffset< T > **const WCAPotentials, PairPotentials::FENE< T > **const FENEPotentials, PairPotentials::MagneticDipoleDipoleInteraction_ConstantIdenticalDipoles< T > **const magneticPotential)
Returns the force that is exerted on particleID1 due to particleID2.
void destroyInteractionsOnDevice(PairPotentials::WeeksChandlerAndersen_DistanceOffset< T > **const WCAPotentials, PairPotentials::FENE< T > **const FENEPotentials, PairPotentials::MagneticDipoleDipoleInteraction_ConstantIdenticalDipoles< T > **const magneticPotential)
Frees the memory allocated through createInteractionsOnDevice.