MpiDataClass.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef MPIDATACLASS_H_
6 #define MPIDATACLASS_H_
7 
10 #include "ParticleHandler.h"
11 
13 
19 {
20 public:
21  unsigned int id;
22  unsigned int indSpecies;
23  unsigned int HGridLevel;
30  bool isMaser; //TODO
31  bool isFixed;
34  static BaseParticle* newParticle ();
35 };
36 
38 {
39 public:
45  static BaseParticle* newParticle ();
46 };
47 
49 {
50 public:
54  static BaseParticle* newParticle ();
55 };
56 
61 //to run simulations with LiquidFilmParticles in parallel, uncomment the line below (and comment the line above).
62 //class MPIParticle : public MPILiquidFilmParticle {};
63 
69 {
70 public:
71  unsigned int id;
75 };
76 
82 {
83 public:
86 };
87 
93 {
94 public:
97 };
98 
109 class Empty
110 {
111 };
112 
127 {
128 public:
129  BaseParticle* particle; //Used to store the pointer of the current particle (ghost or periodic) located on the same domain
130  BaseParticle* otherParticle; //Used to store the pointer of the other particle (ghost or periodic) located on the same domain
131  //int currentProcessor;
132  //int otherProcessor;
133  int targetProcessor; //Stores the target processor where the ghost or periodic is located
134  //int targetID;
135  //int periodicBoundaryIndex;
136  //std::vector<int> previousPeriodicComplexity;
137  //std::vector<int> currentPeriodicComplexity;
138  std::vector<int> periodicComplexity; //Not sure if this is required
139  std::vector<int> targetPeriodicComplexity; //ppid uses this to store the ghost periodic complexity when adding
140  std::vector<int> realPeriodicComplexity; //gpid uses this to store the realPeriodicComplexity of the real particle
141  //std::vector<int> previousRealPeriodicComplexity;
142  //Vec3D targetPosition;
143 };
144 
147 
152 
157 
162 
167 
172 
176 double getMPISum(double val);
177 
178 #endif /* MPIDATACLASS_H_ */
void copyDataFromMPIParticleToParticle(MPIParticle *bP, BaseParticle *p, ParticleHandler *particleHandler)
Copies data from an MPIParticle class to a BaseParticle.
Definition: MpiDataClass.cc:84
MpiPeriodicParticleIDBase MpiPeriodicGhostParticleID
Definition: MpiDataClass.h:146
MPIParticleVelocity copyVelocityFrom(BaseParticle *particles)
Copies the velocity from a particle to an MPIParticleVelocity class.
Definition: MpiDataClass.cc:169
MPIParticlePosition copyPositionFrom(BaseParticle *particle)
Copies the position from a particle to an MPIParticlePosition class.
Definition: MpiDataClass.cc:153
MpiPeriodicParticleIDBase MpiPeriodicParticleID
Definition: MpiDataClass.h:145
Vec3D getMPISum(Vec3D &val)
Definition: MpiDataClass.cc:178
MPIParticle copyDataFromParticleToMPIParticle(BaseParticle *p)
Copies data from a BaseParticle to an MPIParticle class and returns this.
Definition: MpiDataClass.cc:103
float * p
Definition: Tutorial_Map_using.cpp:9
Definition: BaseParticle.h:33
Data class to send an empty class over MPI.
Definition: MpiDataClass.h:110
Definition: MpiDataClass.h:49
static BaseParticle * newParticle()
Definition: MpiDataClass.cc:144
void copyDataFromMPIParticleToParticle(BaseParticle *p)
Definition: MpiDataClass.cc:71
void copyDataFromParticleToMPIParticle(BaseParticle *p)
Definition: MpiDataClass.cc:131
Mdouble liquidVolume
Definition: MpiDataClass.h:51
Data class to send a particle force over MPI.
Definition: MpiDataClass.h:93
Vec3D torque
Definition: MpiDataClass.h:96
Vec3D force
Definition: MpiDataClass.h:95
Data class to send a particle position over MPI.
Definition: MpiDataClass.h:69
Vec3D position
Definition: MpiDataClass.h:72
Quaternion orientation
Definition: MpiDataClass.h:73
Mdouble liquidVolume
Definition: MpiDataClass.h:74
unsigned int id
Definition: MpiDataClass.h:71
Data class to send a particle velocity over MPI.
Definition: MpiDataClass.h:82
Vec3D velocity
Definition: MpiDataClass.h:84
Vec3D angularVelocity
Definition: MpiDataClass.h:85
Data class to send a particle over MPI.
Definition: MpiDataClass.h:60
Definition: MpiDataClass.h:19
bool isFixed
Definition: MpiDataClass.h:31
Vec3D angularVelocity
Definition: MpiDataClass.h:26
Vec3D position
Definition: MpiDataClass.h:25
static BaseParticle * newParticle()
Definition: MpiDataClass.cc:136
void copyDataFromMPIParticleToParticle(BaseParticle *p)
Copies data from a BaseParticle to an MPIParticle class and returns this.
Definition: MpiDataClass.cc:30
unsigned int HGridLevel
Definition: MpiDataClass.h:23
unsigned int id
Definition: MpiDataClass.h:21
Mdouble radius
Definition: MpiDataClass.h:24
unsigned communicationComplexity
Definition: MpiDataClass.h:29
unsigned int indSpecies
Definition: MpiDataClass.h:22
bool isMaser
Definition: MpiDataClass.h:30
void copyDataFromParticleToMPIParticle(BaseParticle *p)
Definition: MpiDataClass.cc:110
Quaternion orientation
Definition: MpiDataClass.h:28
Vec3D velocity
Definition: MpiDataClass.h:27
Definition: MpiDataClass.h:38
void copyDataFromParticleToMPIParticle(BaseParticle *p)
Definition: MpiDataClass.cc:124
Mdouble epsilon2
Definition: MpiDataClass.h:42
static BaseParticle * newParticle()
Definition: MpiDataClass.cc:140
Vec3D axes
Definition: MpiDataClass.h:40
Mdouble epsilon1
Definition: MpiDataClass.h:41
void copyDataFromMPIParticleToParticle(BaseParticle *p)
Definition: MpiDataClass.cc:64
Definition: MpiDataClass.h:127
std::vector< int > periodicComplexity
Definition: MpiDataClass.h:138
std::vector< int > realPeriodicComplexity
Definition: MpiDataClass.h:140
int targetProcessor
Definition: MpiDataClass.h:133
BaseParticle * otherParticle
Definition: MpiDataClass.h:130
std::vector< int > targetPeriodicComplexity
Definition: MpiDataClass.h:139
BaseParticle * particle
Definition: MpiDataClass.h:129
Container to store pointers to all particles.
Definition: ParticleHandler.h:28
This class contains the 4 components of a quaternion and the standard operators and functions needed ...
Definition: Kernel/Math/Quaternion.h:42
Definition: SuperQuadricParticle.h:36
Definition: Kernel/Math/Vector.h:30
val
Definition: calibrate.py:119