| 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(); |