38 |
|
|
39 |
|
namespace oopse { |
40 |
|
|
41 |
+ |
/** |
42 |
+ |
* @class NVT NVT.hpp "integrators/NVT.hpp" |
43 |
+ |
* Basic thermostating via Hoover, Phys.Rev.A, 1985, Vol. 31 (5) 1695-1697 |
44 |
+ |
* @todo document |
45 |
+ |
*/ |
46 |
|
class NVT : public VerlocityVerletIntegrator{ |
47 |
|
public: |
48 |
|
NVT(SimInfo* info); |
49 |
|
|
50 |
+ |
int getMaxIterationNumber() { |
51 |
+ |
return maxIterNum_; |
52 |
+ |
} |
53 |
+ |
|
54 |
+ |
void setMaxIterationNumber(int maxIter) { |
55 |
+ |
maxIterNum_ = maxIter; |
56 |
+ |
} |
57 |
+ |
|
58 |
+ |
double getTauThermostat() { |
59 |
+ |
return tauThermostat_; |
60 |
+ |
} |
61 |
+ |
|
62 |
+ |
void setTauThermostat(double tt) { |
63 |
+ |
tauThermostat_ = tt; |
64 |
+ |
} |
65 |
+ |
|
66 |
+ |
double getTargetTemp() { |
67 |
+ |
return targetTemp_; |
68 |
+ |
} |
69 |
+ |
|
70 |
+ |
void setTargetTemp(double tt) { |
71 |
+ |
targetTemp_ = tt; |
72 |
+ |
} |
73 |
+ |
|
74 |
+ |
double getChiTolerance() { |
75 |
+ |
return chiTolerance_; |
76 |
+ |
} |
77 |
+ |
|
78 |
+ |
void setChiTolerance(double tol) { |
79 |
+ |
chiTolerance_ = tol; |
80 |
+ |
} |
81 |
+ |
|
82 |
|
protected: |
83 |
|
virtual void moveA(); |
84 |
|
virtual void moveB(); |
48 |
– |
}; |
85 |
|
|
86 |
+ |
private: |
87 |
+ |
int maxIterNum_; |
88 |
+ |
double targetTemp_; |
89 |
+ |
double tauThermostat_; |
90 |
+ |
double chiTolerance_; |
91 |
+ |
|
92 |
+ |
std::vector<Vector3d> oldVel_; |
93 |
+ |
std::vector<Vector3d> oldJi_; |
94 |
+ |
}; |
95 |
+ |
|
96 |
|
Integrator* createNVT(SimInfo* info); |
97 |
|
|
98 |
|
} //end namespace oopse |