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

Comparing trunk/OOPSE/libmdtools/NPTim.cpp (file contents):
Revision 605 by gezelter, Tue Jul 15 03:27:24 2003 UTC vs.
Revision 746 by mmeineke, Thu Sep 4 21:48:35 2003 UTC

# Line 24 | Line 24 | NPTim::NPTim ( SimInfo *theInfo, ForceFields* the_ff):
24   //  The NPTim variant scales the molecular center-of-mass coordinates
25   //  instead of the atomic coordinates
26  
27 < NPTim::NPTim ( SimInfo *theInfo, ForceFields* the_ff):
28 <  Integrator( theInfo, the_ff )
27 > template<typename T> NPTim<T>::NPTim ( SimInfo *theInfo, ForceFields* the_ff):
28 >  T( theInfo, the_ff )
29   {
30    chi = 0.0;
31    eta = 0.0;
# Line 35 | Line 35 | void NPTim::moveA() {
35    have_target_pressure = 0;
36   }
37  
38 < void NPTim::moveA() {
38 > template<typename T> void NPTim<T>::moveA() {
39    
40    int i, j, k;
41    DirectionalAtom* dAtom;
# Line 46 | Line 46 | void NPTim::moveA() {
46  
47    double rj[3];
48    double instaTemp, instaPress, instaVol;
49 <  double tt2, tb2;
49 >  double tt2, tb2, scaleFactor;
50  
51    int nInMol;
52    double rc[3];
# Line 146 | Line 146 | void NPTim::moveA() {
146        }
147      }
148    }
149 +
150    // Scale the box after all the positions have been moved:
151    
152 <  cerr << "eta = " << eta
153 <       << "; exp(dt*eta) = " << exp(eta*dt) << "\n";
154 <  
155 <  info->scaleBox(exp(dt*eta));
152 >  scaleFactor = exp(dt*eta);
153 >
154 >  if (scaleFactor > 1.1 || scaleFactor < 0.9) {
155 >    sprintf( painCave.errMsg,
156 >             "NPTi error: Attempting a Box scaling of more than 10 percent"
157 >             " check your tauBarostat, as it is probably too small!\n"
158 >             " eta = %lf, scaleFactor = %lf\n", eta, scaleFactor
159 >             );
160 >    painCave.isFatal = 1;
161 >    simError();
162 >  } else {        
163 >    info->scaleBox(exp(dt*eta));      
164 >  }
165   }
166  
167 < void NPTim::moveB( void ){
167 > template<typename T> void NPTim<T>::moveB( void ){
168    int i, j;
169    DirectionalAtom* dAtom;
170    double Tb[3], ji[3];
# Line 209 | Line 219 | int NPTim::readyCheck() {
219    }
220   }
221  
222 < int NPTim::readyCheck() {
222 > template<typename T> void NPTim<T>::resetIntegrator() {
223 >  chi = 0.0;
224 >  eta = 0.0;
225 > }
226 >
227 > template<typename T> int NPTim<T>::readyCheck() {
228 >
229 >  //check parent's readyCheck() first
230 >  if (T::readyCheck() == -1)
231 >    return -1;
232  
233    // First check to see if we have a target temperature.
234    // Not having one is fatal.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines