297 |
|
short int have_target_pressure; |
298 |
|
|
299 |
|
}; |
300 |
+ |
|
301 |
+ |
|
302 |
+ |
template<typename T> class NPTpr : public T{ |
303 |
+ |
|
304 |
+ |
public: |
305 |
+ |
|
306 |
+ |
NPTpr ( SimInfo *theInfo, ForceFields* the_ff); |
307 |
+ |
virtual ~NPTpr() {}; |
308 |
+ |
|
309 |
+ |
virtual void integrateStep( int calcPot, int calcStress ){ |
310 |
+ |
calcStress = 1; |
311 |
+ |
T::integrateStep( calcPot, calcStress ); |
312 |
+ |
} |
313 |
|
|
314 |
+ |
void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} |
315 |
+ |
void setTauBarostat(double tb) {tauBarostat = tb; have_tau_barostat=1;} |
316 |
+ |
void setTargetTemp(double tt) {targetTemp = tt; have_target_temp = 1;} |
317 |
+ |
void setTargetPressure(double tp) {targetPressure = tp; have_target_pressure = 1;} |
318 |
+ |
|
319 |
+ |
protected: |
320 |
+ |
|
321 |
+ |
virtual void moveA( void ); |
322 |
+ |
virtual void moveB( void ); |
323 |
+ |
|
324 |
+ |
virtual int readyCheck(); |
325 |
+ |
|
326 |
+ |
// chi and eta are the propagated degrees of freedom |
327 |
+ |
|
328 |
+ |
double chi; |
329 |
+ |
double eta[3][3]; |
330 |
+ |
double NkBT; |
331 |
+ |
|
332 |
+ |
// targetTemp, targetPressure, and tauBarostat must be set. |
333 |
+ |
// One of qmass or tauThermostat must be set; |
334 |
+ |
|
335 |
+ |
double targetTemp; |
336 |
+ |
double targetPressure; |
337 |
+ |
double tauThermostat; |
338 |
+ |
double tauBarostat; |
339 |
+ |
|
340 |
+ |
short int have_tau_thermostat, have_tau_barostat, have_target_temp; |
341 |
+ |
short int have_target_pressure; |
342 |
+ |
|
343 |
+ |
}; |
344 |
+ |
|
345 |
+ |
|
346 |
|
template<typename T> class ZConstraint : public T { |
347 |
|
|
348 |
|
public: |