ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/NVT.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/NVT.cpp (file contents):
Revision 560 by gezelter, Fri Jun 20 16:49:33 2003 UTC vs.
Revision 561 by mmeineke, Fri Jun 20 20:29:36 2003 UTC

# Line 6 | Line 6
6   #include "Thermo.hpp"
7   #include "ReadWrite.hpp"
8   #include "Integrator.hpp"
9 < #include "NVT.hpp"
10 <
9 > #include "simError.h"
10 >
11 >
12   // Basic thermostating via Hoover, Phys.Rev.A, 1985, Vol. 31 (5) 1695-1697
13  
14 < NVT::NVT() {
14 > NVT::NVT ( SimInfo *theInfo, ForceFields* the_ff):
15 >  Integrator( theInfo, the_ff )
16 > {
17    zeta = 0.0;
18    have_tau_thermostat = 0;
19    have_target_temp = 0;
# Line 24 | Line 27 | void NVT::moveA() {
27    DirectionalAtom* dAtom;
28    double Tb[3];
29    double ji[3];
30 +  double ke;
31 +  double angle;
32  
33 +
34    ke = tStats->getKinetic() * eConvert;
35    zeta += dt2 * ( (2.0 * ke  -  NkBT) / qmass );
36  
# Line 68 | Line 74 | void NVT::moveA() {
74        
75        // rotate about the x-axis      
76        angle = dt2 * ji[0] / dAtom->getIxx();
77 <      this->rotate( 1, 2, angle, ji, &aMat[aMatIndex] );
77 >      this->rotate( 1, 2, angle, ji, &Amat[aMatIndex] );
78        
79        // rotate about the y-axis
80        angle = dt2 * ji[1] / dAtom->getIyy();
81 <      this->rotate( 2, 0, angle, ji, &aMat[aMatIndex] );
81 >      this->rotate( 2, 0, angle, ji, &Amat[aMatIndex] );
82        
83        // rotate about the z-axis
84        angle = dt * ji[2] / dAtom->getIzz();
85 <      this->rotate( 0, 1, angle, ji, &aMat[aMatIndex] );
85 >      this->rotate( 0, 1, angle, ji, &Amat[aMatIndex] );
86        
87        // rotate about the y-axis
88        angle = dt2 * ji[1] / dAtom->getIyy();
89 <      this->rotate( 2, 0, angle, ji, &aMat[aMatIndex] );
89 >      this->rotate( 2, 0, angle, ji, &Amat[aMatIndex] );
90        
91         // rotate about the x-axis
92        angle = dt2 * ji[0] / dAtom->getIxx();
93 <      this->rotate( 1, 2, angle, ji, &aMat[aMatIndex] );
93 >      this->rotate( 1, 2, angle, ji, &Amat[aMatIndex] );
94        
95        dAtom->setJx( ji[0] );
96        dAtom->setJy( ji[1] );
# Line 94 | Line 100 | void Integrator::moveB( void ){
100    }
101   }
102  
103 < void Integrator::moveB( void ){
103 > void NVT::moveB( void ){
104    int i,j,k;
105    int atomIndex;
106    DirectionalAtom* dAtom;
107    double Tb[3];
108    double ji[3];
109 +  double ke;
110 +  
111  
112    ke = tStats->getKinetic() * eConvert;
113    zeta += dt2 * ( (2.0 * ke  -  NkBT) / qmass );
# Line 134 | Line 142 | void Integrator::moveB( void ){
142        ji[1] += dt2 * (Tb[1] * eConvert - ji[1]*zeta);
143        ji[2] += dt2 * (Tb[2] * eConvert - ji[2]*zeta);
144        
137      jx2 = ji[0] * ji[0];
138      jy2 = ji[1] * ji[1];
139      jz2 = ji[2] * ji[2];
140      
145        dAtom->setJx( ji[0] );
146        dAtom->setJy( ji[1] );
147        dAtom->setJz( ji[2] );
# Line 146 | Line 150 | int NVT::readyCheck() {
150   }
151  
152   int NVT::readyCheck() {
153 <  double NkBT;
150 <
153 >
154    // First check to see if we have a target temperature.
155    // Not having one is fatal.
156    
# Line 164 | Line 167 | int NVT::readyCheck() {
167    // and then set NkBT if we do have it.   Unreasonable numbers of DOFs
168    // are also fatal.
169  
170 <  if (entry_plug->ndf > 0) {
171 <    NkBT = (double)entry_plug->ndf * kB * targetTemp;
170 >  if (info->ndf > 0) {
171 >    NkBT = (double)info->ndf * kB * targetTemp;
172    } else {
173      sprintf( painCave.errMsg,
174               "NVT error: We got a silly number of degrees of freedom!\n"
# Line 181 | Line 184 | int NVT::readyCheck() {
184    if (!have_qmass) {
185      if (have_tau_thermostat) {
186        sprintf( painCave.errMsg,
187 <               "NVT info: Setting qMass = %d\n", tauThermostat * NkBT);
187 >               "NVT info: Setting qMass = %lf\n", tauThermostat * NkBT);
188        this->setQmass(tauThermostat * NkBT);      
189        painCave.isFatal = 0;
190        simError();
# Line 198 | Line 201 | int NVT::readyCheck() {
201    return 1;
202   }
203  
201 #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines