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

Comparing trunk/OOPSE/libmdtools/NPTf.cpp (file contents):
Revision 847 by mmeineke, Fri Oct 31 18:28:52 2003 UTC vs.
Revision 1097 by gezelter, Mon Apr 12 20:32:20 2004 UTC

# Line 1 | Line 1
1   #include <math.h>
2 +
3 + #include "MatVec3.h"
4   #include "Atom.hpp"
5   #include "SRI.hpp"
6   #include "AbstractClasses.hpp"
# Line 39 | Line 41 | template<typename T> NPTf<T>::NPTf ( SimInfo *theInfo,
41      }
42    }
43  
44 +
45 +  if( theInfo->useInitXSstate ){
46      // retrieve eta array from simInfo if it exists
47      data = info->getProperty(ETAVALUE_ID);
48      if(data){
49        etaValue = dynamic_cast<DoubleArrayData*>(data);
50 <
50 >      
51        if(etaValue){
52 <        etaArray = etaValue->getData();
53 <
54 <        for(i = 0; i < 3; i++){
55 <          for (j = 0; j < 3; j++){
56 <            eta[i][j] = etaArray[3*i+j];
57 <            oldEta[i][j] = eta[i][j];
58 <          }
59 <        }
56 <
52 >        etaArray = etaValue->getData();
53 >        
54 >        for(i = 0; i < 3; i++){
55 >          for (j = 0; j < 3; j++){
56 >            eta[i][j] = etaArray[3*i+j];
57 >            oldEta[i][j] = eta[i][j];
58 >          }
59 >        }
60        }
61      }
62 +  }
63  
64   }
65  
# Line 114 | Line 118 | template<typename T> void NPTf<T>::evolveEtaB() {
118    }
119   }
120  
121 < template<typename T> void NPTf<T>::getVelScaleA(double sc[3], double vel[3]) {
121 > template<typename T> void NPTf<T>::calcVelScale(void){
122    int i,j;
119  double vScale[3][3];
123  
124    for (i = 0; i < 3; i++ ) {
125      for (j = 0; j < 3; j++ ) {
# Line 127 | Line 130 | template<typename T> void NPTf<T>::getVelScaleA(double
130        }
131      }
132    }
133 + }
134  
135 <  info->matVecMul3( vScale, vel, sc );
135 > template<typename T> void NPTf<T>::getVelScaleA(double sc[3], double vel[3]) {
136 >
137 >  matVecMul3( vScale, vel, sc );
138   }
139  
140   template<typename T> void NPTf<T>::getVelScaleB(double sc[3], int index ){
141 <  int i,j;
141 >  int j;
142    double myVel[3];
143    double vScale[3][3];
144  
139  for (i = 0; i < 3; i++ ) {
140    for (j = 0; j < 3; j++ ) {
141      vScale[i][j] = eta[i][j];
142
143      if (i == j) {
144        vScale[i][j] += chi;
145      }
146    }
147  }
148
145    for (j = 0; j < 3; j++)
146      myVel[j] = oldVel[3*index + j];
147  
148 <  info->matVecMul3( vScale, myVel, sc );
148 >  matVecMul3( vScale, myVel, sc );
149   }
150  
151   template<typename T> void NPTf<T>::getPosScale(double pos[3], double COM[3],
# Line 160 | Line 156 | template<typename T> void NPTf<T>::getPosScale(double
156    for(j=0; j<3; j++)
157      rj[j] = ( oldPos[index*3+j] + pos[j]) / 2.0 - COM[j];
158  
159 <  info->matVecMul3( eta, rj, sc );
159 >  matVecMul3( eta, rj, sc );
160   }
161  
162   template<typename T> void NPTf<T>::scaleSimBox( void ){
# Line 208 | Line 204 | template<typename T> void NPTf<T>::scaleSimBox( void )
204      if (scaleMat[i][i] < smallScale) smallScale = scaleMat[i][i];
205    }
206  
207 <  if ((bigScale > 1.1) || (smallScale < 0.9)) {
207 >  if ((bigScale > 1.01) || (smallScale < 0.99)) {
208      sprintf( painCave.errMsg,
209 <             "NPTf error: Attempting a Box scaling of more than 10 percent.\n"
209 >             "NPTf error: Attempting a Box scaling of more than 1 percent.\n"
210               " Check your tauBarostat, as it is probably too small!\n\n"
211               " scaleMat = [%lf\t%lf\t%lf]\n"
212               "            [%lf\t%lf\t%lf]\n"
# Line 220 | Line 216 | template<typename T> void NPTf<T>::scaleSimBox( void )
216               scaleMat[2][0],scaleMat[2][1],scaleMat[2][2]);
217      painCave.isFatal = 1;
218      simError();
219 <  } else if (offDiagMax > 0.1) {
219 >  } else if (offDiagMax > 0.01) {
220      sprintf( painCave.errMsg,
221 <             "NPTf error: Attempting an off-diagonal Box scaling of more than 10 percent.\n"
221 >             "NPTf error: Attempting an off-diagonal Box scaling of more than 1 percent.\n"
222               " Check your tauBarostat, as it is probably too small!\n\n"
223               " scaleMat = [%lf\t%lf\t%lf]\n"
224               "            [%lf\t%lf\t%lf]\n"
# Line 234 | Line 230 | template<typename T> void NPTf<T>::scaleSimBox( void )
230      simError();
231    } else {
232      info->getBoxM(hm);
233 <    info->matMul3(hm, scaleMat, hmnew);
233 >    matMul3(hm, scaleMat, hmnew);
234      info->setBoxM(hmnew);
235    }
236   }
# Line 270 | Line 266 | template<typename T> double NPTf<T>::getConservedQuant
266  
267    thermostat_potential = fkBT* integralOfChidt / eConvert;
268  
269 <  info->transposeMat3(eta, a);
270 <  info->matMul3(a, eta, b);
271 <  trEta = info->matTrace3(b);
269 >  transposeMat3(eta, a);
270 >  matMul3(a, eta, b);
271 >  trEta = matTrace3(b);
272  
273    barostat_kinetic = NkBT * tb2 * trEta /
274      (2.0 * eConvert);
# Line 283 | Line 279 | template<typename T> double NPTf<T>::getConservedQuant
279    conservedQuantity = totalEnergy + thermostat_kinetic + thermostat_potential +
280      barostat_kinetic + barostat_potential;
281  
286 //   cout.width(8);
287 //   cout.precision(8);
288
289 //   cerr << info->getTime() << "\t" << Energy << "\t" << thermostat_kinetic <<
290 //       "\t" << thermostat_potential << "\t" << barostat_kinetic <<
291 //       "\t" << barostat_potential << "\t" << conservedQuantity << endl;
292
282    return conservedQuantity;
283  
284   }
# Line 299 | Line 288 | template<typename T> string NPTf<T>::getAdditionalPara
288    const int BUFFERSIZE = 2000; // size of the read buffer
289    char buffer[BUFFERSIZE];
290  
291 <  sprintf(buffer,"\t%lf\t%lf;", chi, integralOfChidt);
291 >  sprintf(buffer,"\t%G\t%G;", chi, integralOfChidt);
292    parameters += buffer;
293  
294    for(int i = 0; i < 3; i++){
295 <    sprintf(buffer,"\t%lf\t%lf\t%lf;", eta[3*i], eta[3*i+1], eta[3*i+2]);
295 >    sprintf(buffer,"\t%G\t%G\t%G;", eta[i][0], eta[i][1], eta[i][2]);
296      parameters += buffer;
297    }
298  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines