| 93 |
|
atoms = entry_plug->atoms; |
| 94 |
|
|
| 95 |
|
p_ext = targetPressure * p_units; |
| 96 |
< |
p_mol = p_int; |
| 96 |
> |
p_mol = p_int * p_units; |
| 97 |
|
|
| 98 |
|
entry_plug->getBox(oldBox); |
| 99 |
|
volume = oldBox[0]*oldBox[1]*oldBox[2]; |
| 106 |
|
epsilonDot += dt * ((p_mol - p_ext) * volume / |
| 107 |
|
(tauRelax*tauRelax * kB * targetTemp) ); |
| 108 |
|
|
| 109 |
– |
|
| 110 |
– |
std::cerr << "dt = " << dt << " tauRelax = " << tauRelax << " kB = " << kB << "targetTemp = " << targetTemp << "\n"; |
| 111 |
– |
|
| 109 |
|
// determine the change in cell volume |
| 110 |
|
scale = pow( (1.0 + dt * 3.0 * epsilonDot), (1.0 / 3.0)); |
| 111 |
|
|
| 115 |
– |
std::cerr << "p_mol = " << p_mol << " p_ext = " << p_ext << " scale = " << scale << "\n"; |
| 116 |
– |
|
| 117 |
– |
|
| 112 |
|
newBox[0] = oldBox[0] * scale; |
| 113 |
|
newBox[1] = oldBox[1] * scale; |
| 114 |
|
newBox[2] = oldBox[2] * scale; |
| 127 |
|
zeta += dt * ( (ke_temp*2.0 - NkBT) / qmass ); |
| 128 |
|
zetaScale = zeta * dt; |
| 129 |
|
|
| 130 |
< |
std::cerr << "zetaScale = " << zetaScale << "epsilonScale = " << epsilonScale << "\n"; |
| 130 |
> |
std::cerr << "zetaScale = " << zetaScale << " epsilonScale = " << epsilonScale << "\n"; |
| 131 |
|
|
| 132 |
|
// apply barostating and thermostating to velocities and angular momenta |
| 133 |
|
for(i = 0; i < entry_plug->n_atoms; i++){ |
| 166 |
|
double r[3]; |
| 167 |
|
double boxNum[3]; |
| 168 |
|
double percentScale[3]; |
| 169 |
+ |
double delta[3]; |
| 170 |
|
double rxi, ryi, rzi; |
| 171 |
|
|
| 172 |
|
molecules = entry_plug->molecules; |
| 176 |
|
percentScale[1] = (newBox[1] - oldBox[1]) / oldBox[1]; |
| 177 |
|
percentScale[2] = (newBox[2] - oldBox[2]) / oldBox[2]; |
| 178 |
|
|
| 184 |
– |
std::cerr << "ps = " << percentScale[0] <<" " << percentScale[1] << " " << percentScale[2] << "\n"; |
| 185 |
– |
|
| 186 |
– |
|
| 179 |
|
for (i=0; i < entry_plug->n_mol; i++) { |
| 180 |
|
|
| 181 |
|
molecules[i].getCOM(r); |
| 191 |
|
boxNum[2] = oldBox[2] * copysign(1.0,r[2]) * |
| 192 |
|
(double)(int)(fabs(r[2]/oldBox[2]) + 0.5); |
| 193 |
|
|
| 202 |
– |
|
| 203 |
– |
std::cerr << "boxNum = " << boxNum[0] << " " << boxNum[1] << " " << boxNum[2] << "\n"; |
| 204 |
– |
|
| 194 |
|
rxi = r[0] - boxNum[0]; |
| 195 |
|
ryi = r[1] - boxNum[1]; |
| 196 |
|
rzi = r[2] - boxNum[2]; |
| 200 |
|
ryi += ryi*percentScale[1]; |
| 201 |
|
rzi += rzi*percentScale[2]; |
| 202 |
|
|
| 203 |
< |
r[0] = rxi + boxNum[0]; |
| 204 |
< |
r[1] = ryi + boxNum[1]; |
| 205 |
< |
r[2] = rzi + boxNum[2]; |
| 203 |
> |
delta[0] = r[0] - (rxi + boxNum[0]); |
| 204 |
> |
delta[1] = r[1] - (ryi + boxNum[1]); |
| 205 |
> |
delta[2] = r[2] - (rzi + boxNum[2]); |
| 206 |
|
|
| 207 |
< |
molecules[i].moveCOM(r); |
| 207 |
> |
molecules[i].moveCOM(delta); |
| 208 |
|
} |
| 209 |
|
} |