47 |
|
double tt2, tb2; |
48 |
|
double angle; |
49 |
|
double press[9]; |
50 |
– |
const double p_convert = 1.63882576e8; |
50 |
|
|
51 |
|
tt2 = tauThermostat * tauThermostat; |
52 |
|
tb2 = tauBarostat * tauBarostat; |
53 |
|
|
54 |
|
instaTemp = tStats->getTemperature(); |
55 |
|
tStats->getPressureTensor(press); |
57 |
– |
|
58 |
– |
for (i=0; i < 9; i++) press[i] *= p_convert; |
59 |
– |
|
56 |
|
instaVol = tStats->getVolume(); |
57 |
|
|
58 |
|
// first evolve chi a half step |
59 |
|
|
60 |
|
chi += dt2 * ( instaTemp / targetTemp - 1.0) / tt2; |
61 |
|
|
62 |
< |
eta[0] += dt2 * instaVol * (press[0] - targetPressure) / (NkBT*tb2); |
62 |
> |
eta[0] += dt2 * instaVol * (press[0] - targetPressure/p_convert) / |
63 |
> |
(NkBT*tb2); |
64 |
|
eta[1] += dt2 * instaVol * press[1] / (NkBT*tb2); |
65 |
|
eta[2] += dt2 * instaVol * press[2] / (NkBT*tb2); |
66 |
|
eta[3] += dt2 * instaVol * press[3] / (NkBT*tb2); |
67 |
< |
eta[4] += dt2 * instaVol * (press[4] - targetPressure) / (NkBT*tb2); |
67 |
> |
eta[4] += dt2 * instaVol * (press[4] - targetPressure/p_convert) / |
68 |
> |
(NkBT*tb2); |
69 |
|
eta[5] += dt2 * instaVol * press[5] / (NkBT*tb2); |
70 |
|
eta[6] += dt2 * instaVol * press[6] / (NkBT*tb2); |
71 |
|
eta[7] += dt2 * instaVol * press[7] / (NkBT*tb2); |
72 |
< |
eta[8] += dt2 * instaVol * (press[8] - targetPressure) / (NkBT*tb2); |
72 |
> |
eta[8] += dt2 * instaVol * (press[8] - targetPressure/p_convert) / |
73 |
> |
(NkBT*tb2); |
74 |
|
|
75 |
|
for( i=0; i<nAtoms; i++ ){ |
76 |
|
atomIndex = i * 3; |
198 |
|
for (i = 0; i < 3; i++) { |
199 |
|
for (j = 0; j < 3; j++) { |
200 |
|
// remember that hmat has transpose ordering for Fortran compat: |
201 |
< |
hm[3*j + 1] = hmnew[i][j]; |
201 |
> |
hm[3*j + i] = hmnew[i][j]; |
202 |
|
} |
203 |
|
} |
204 |
|
|
224 |
|
|
225 |
|
instaTemp = tStats->getTemperature(); |
226 |
|
tStats->getPressureTensor(press); |
228 |
– |
|
229 |
– |
for (i=0; i < 9; i++) press[i] *= p_convert; |
230 |
– |
|
227 |
|
instaVol = tStats->getVolume(); |
228 |
|
|
229 |
|
// first evolve chi a half step |
230 |
|
|
231 |
|
chi += dt2 * ( instaTemp / targetTemp - 1.0) / tt2; |
232 |
|
|
233 |
< |
eta[0] += dt2 * instaVol * (press[0] - targetPressure) / (NkBT*tb2); |
233 |
> |
eta[0] += dt2 * instaVol * (press[0] - targetPressure/p_convert) / |
234 |
> |
(NkBT*tb2); |
235 |
|
eta[1] += dt2 * instaVol * press[1] / (NkBT*tb2); |
236 |
|
eta[2] += dt2 * instaVol * press[2] / (NkBT*tb2); |
237 |
|
eta[3] += dt2 * instaVol * press[3] / (NkBT*tb2); |
238 |
< |
eta[4] += dt2 * instaVol * (press[4] - targetPressure) / (NkBT*tb2); |
238 |
> |
eta[4] += dt2 * instaVol * (press[4] - targetPressure/p_convert) / |
239 |
> |
(NkBT*tb2); |
240 |
|
eta[5] += dt2 * instaVol * press[5] / (NkBT*tb2); |
241 |
|
eta[6] += dt2 * instaVol * press[6] / (NkBT*tb2); |
242 |
|
eta[7] += dt2 * instaVol * press[7] / (NkBT*tb2); |
243 |
< |
eta[8] += dt2 * instaVol * (press[8] - targetPressure) / (NkBT*tb2); |
243 |
> |
eta[8] += dt2 * instaVol * (press[8] - targetPressure/p_convert) / |
244 |
> |
(NkBT*tb2); |
245 |
|
|
246 |
|
for( i=0; i<nAtoms; i++ ){ |
247 |
|
atomIndex = i * 3; |
294 |
|
} |
295 |
|
} |
296 |
|
|
297 |
< |
int NPTi::readyCheck() { |
297 |
> |
int NPTf::readyCheck() { |
298 |
|
|
299 |
|
// First check to see if we have a target temperature. |
300 |
|
// Not having one is fatal. |
301 |
|
|
302 |
|
if (!have_target_temp) { |
303 |
|
sprintf( painCave.errMsg, |
304 |
< |
"NPTi error: You can't use the NPTi integrator\n" |
304 |
> |
"NPTf error: You can't use the NPTf integrator\n" |
305 |
|
" without a targetTemp!\n" |
306 |
|
); |
307 |
|
painCave.isFatal = 1; |
311 |
|
|
312 |
|
if (!have_target_pressure) { |
313 |
|
sprintf( painCave.errMsg, |
314 |
< |
"NPTi error: You can't use the NPTi integrator\n" |
314 |
> |
"NPTf error: You can't use the NPTf integrator\n" |
315 |
|
" without a targetPressure!\n" |
316 |
|
); |
317 |
|
painCave.isFatal = 1; |
323 |
|
|
324 |
|
if (!have_tau_thermostat) { |
325 |
|
sprintf( painCave.errMsg, |
326 |
< |
"NPTi error: If you use the NPTi\n" |
326 |
> |
"NPTf error: If you use the NPTf\n" |
327 |
|
" integrator, you must set tauThermostat.\n"); |
328 |
|
painCave.isFatal = 1; |
329 |
|
simError(); |
334 |
|
|
335 |
|
if (!have_tau_barostat) { |
336 |
|
sprintf( painCave.errMsg, |
337 |
< |
"NPTi error: If you use the NPTi\n" |
337 |
> |
"NPTf error: If you use the NPTf\n" |
338 |
|
" integrator, you must set tauBarostat.\n"); |
339 |
|
painCave.isFatal = 1; |
340 |
|
simError(); |