39 for (
int iOff = 0; iOff < maxTotalAtoms; iOff++)
70 real3 basis[4] = { {0.25, 0.25, 0.25},
78 for (
int ii=0; ii<3; ++ii)
80 begin[ii] = floor(localMin[ii]/lat);
81 end[ii] = ceil (localMax[ii]/lat);
86 for (
int ix=begin[0]; ix<end[0]; ++ix)
87 for (
int iy=begin[1]; iy<end[1]; ++iy)
88 for (
int iz=begin[2]; iz<end[2]; ++iz)
89 for (
int ib=0; ib<nb; ++ib)
91 real_t rx = (ix+basis[ib][0]) * lat;
92 real_t ry = (iy+basis[ib][1]) * lat;
93 real_t rz = (iz+basis[ib][2]) * lat;
94 if (rx < localMin[0] || rx >= localMax[0])
continue;
95 if (ry < localMin[1] || ry >= localMax[1])
continue;
96 if (rz < localMin[2] || rz >= localMax[2])
continue;
97 int id = ib+nb*(iz+nz*(iy+ny*(ix)));
117 vShift[0] = (newVcm[0] - oldVcm[0]);
118 vShift[1] = (newVcm[1] - oldVcm[1]);
119 vShift[2] = (newVcm[2] - oldVcm[2]);
128 s->
atoms->
p[iOff][0] += mass * vShift[0];
129 s->
atoms->
p[iOff][1] += mass * vShift[1];
130 s->
atoms->
p[iOff][2] += mass * vShift[2];
163 if (temperature == 0.0)
return;
164 real_t vZero[3] = {0., 0., 0.};
169 real_t scaleFactor = sqrt(temperature/temp);
174 s->
atoms->
p[iOff][0] *= scaleFactor;
175 s->
atoms->
p[iOff][1] *= scaleFactor;
176 s->
atoms->
p[iOff][2] *= scaleFactor;
194 s->
atoms->
r[iOff][0] += (2.0*
lcg61(&seed)-1.0) * delta;
195 s->
atoms->
r[iOff][1] += (2.0*
lcg61(&seed)-1.0) * delta;
196 s->
atoms->
r[iOff][2] += (2.0*
lcg61(&seed)-1.0) * delta;
204 real_t vcmLocal[4] = {0., 0., 0., 0.};
205 real_t vcmSum[4] = {0., 0., 0., 0.};
212 vcmLocal[0] += s->
atoms->
p[iOff][0];
213 vcmLocal[1] += s->
atoms->
p[iOff][1];
214 vcmLocal[2] += s->
atoms->
p[iOff][2];
225 real_t totalMass = vcmSum[3];
226 vcm[0] = vcmSum[0]/totalMass;
227 vcm[1] = vcmSum[1]/totalMass;
228 vcm[2] = vcmSum[2]/totalMass;