8 #define D2P31M 2147483647.0
39 std::array<double, 3>
al;
40 std::array<int, 3>
vid;
42 std::array<int, 6>
nn;
43 std::vector<std::vector<double> >
sv;
44 std::array<double, 3> vSum, gvSum;
142 static double Dmod(
double a,
double b) {
154 *seed =
Dmod(*seed * DMUL, D2P31M);
155 return (*seed / D2P31M);
164 double x = 0, y = 0, s = 2.0;
166 x = 2.0 *
RandR(seed) - 1.0;
167 y = 2.0 *
RandR(seed) - 1.0;
170 p[2] = 1.0 - 2.0 * s;
171 s = 2.0 * sqrt(1.0 - s);
double ax
acceleration on x axis
Definition: pmd.hpp:20
std::array< int, 6 > shiftCount
Track the cells that the atom has moved.
Definition: pmd.hpp:28
double ay
acceleration on y axis
Definition: pmd.hpp:21
double vy
velocity on y axis
Definition: pmd.hpp:25
double vz
velocity on y axis
Definition: pmd.hpp:26
double x
position in x axis
Definition: pmd.hpp:16
bool isResident
Marker to identify if the atom is moving out of the system after the time step.
Definition: pmd.hpp:14
Atom()
Default constructor.
Definition: pmd.cpp:22
double vx
velocity on x axis
Definition: pmd.hpp:24
double y
position in y axis
Definition: pmd.hpp:17
double az
acceleration on y axis
Definition: pmd.hpp:22
double type
identifier for atom type
Definition: pmd.hpp:13
double z
position in y axis
Definition: pmd.hpp:18
std::array< int, 3 > InitUcell
Unit cell system properties.
Definition: pmd.hpp:48
std::array< int, 3 > vid
Vector index of this processor.
Definition: pmd.hpp:40
int pid
sequential processor ID of this cell
Definition: pmd.hpp:35
static double RandR(double *seed)
Definition: pmd.hpp:153
void WriteXYZ(int step)
Definition: pmd.cpp:618
static double Dmod(double a, double b)
Definition: pmd.hpp:142
void Update(double DeltaT)
Definition: pmd.cpp:163
int bbd(Atom atom, int ku)
Definition: pmd.cpp:550
std::array< double, 3 > al
Box length per processor.
Definition: pmd.hpp:39
double Density
Density of fcc.
Definition: pmd.hpp:49
void Kick(double DeltaT)
Definition: pmd.cpp:173
int n
Number of resident atoms in this processor.
Definition: pmd.hpp:36
std::array< int, 3 > myparity
Parity of this processor.
Definition: pmd.hpp:41
std::array< int, 3 > vproc
Vector processor decomposition of subsystems arranged in a 3D array.
Definition: pmd.hpp:47
std::vector< std::vector< double > > sv
Shift vector to the 6 neighbors.
Definition: pmd.hpp:43
int bmv(Atom atom, int ku)
Definition: pmd.cpp:574
void EvalProps(int stepCount)
Definition: pmd.cpp:597
double comt
elapsed wall clock time & Communication time in second
Definition: pmd.hpp:38
std::vector< Atom > atoms
resident and moved in atoms
Definition: pmd.hpp:45
double temperature
Calculated temperature of the system at the end of the time-step.
Definition: pmd.hpp:58
void InitNeighborNode(std::array< int, 3 > vproc)
Definition: pmd.cpp:121
int StepAvg
Average of simulation steps before reporting system information.
Definition: pmd.hpp:53
double kinEnergy
Calculated kinetic energy while simulation.
Definition: pmd.hpp:55
double DeltaT
Time scale of single step in simulation.
Definition: pmd.hpp:51
int StepLimit
Total number of steps to carry out the simulation.
Definition: pmd.hpp:52
double InitTemp
Inital temperature of system.
Definition: pmd.hpp:50
void WrapAtoms()
Definition: pmd.cpp:482
double potEnergy
Calculated potential energy while simulation.
Definition: pmd.hpp:56
void ShiftAtoms()
Definition: pmd.cpp:467
SubSystem()
Definition: pmd.cpp:30
std::array< int, 6 > nn
Neighbor node list of this processor.
Definition: pmd.hpp:42
double totEnergy
Calculated total energy energy while simulation.
Definition: pmd.hpp:57
int nglob
Total number of atoms summed over processors.
Definition: pmd.hpp:37
static void RandVec3(double *p, double *seed)
Definition: pmd.hpp:163
std::vector< int > AtomMove(bool)
Definition: pmd.cpp:300
void AtomCopy()
Definition: pmd.cpp:183