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

Comparing branches/new-templateless/OOPSE/libmdtools/NPTf.cpp (file contents):
Revision 848, Fri Oct 31 18:28:53 2003 UTC vs.
Revision 851 by mmeineke, Wed Nov 5 19:18:17 2003 UTC

# Line 1 | Line 1
1 + #include <stdlib.h>
2   #include <math.h>
3 + #include <string.h>
4 +
5   #include "Atom.hpp"
6   #include "SRI.hpp"
7   #include "AbstractClasses.hpp"
# Line 23 | Line 26
26   //
27   //    Hoover, W. G., 1986, Phys. Rev. A, 34, 2499.
28  
29 < template<typename T> NPTf<T>::NPTf ( SimInfo *theInfo, ForceFields* the_ff):
30 <  T( theInfo, the_ff )
29 > NPTf::NPTf ( SimInfo *theInfo, ForceFields* the_ff):
30 >  NPT( theInfo, the_ff )
31   {
32    GenericData* data;
33 <  DoubleArrayData * etaValue;
31 <  vector<double> etaArray;
33 >  double *etaArray;
34    int i,j;
35  
36    for(i = 0; i < 3; i++){
# Line 39 | Line 41 | template<typename T> NPTf<T>::NPTf ( SimInfo *theInfo,
41      }
42    }
43  
44 <    // retrieve eta array from simInfo if it exists
45 <    data = info->getProperty(ETAVALUE_ID);
46 <    if(data){
47 <      etaValue = dynamic_cast<DoubleArrayData*>(data);
48 <
49 <      if(etaValue){
50 <        etaArray = etaValue->getData();
51 <
52 <        for(i = 0; i < 3; i++){
53 <          for (j = 0; j < 3; j++){
54 <            eta[i][j] = etaArray[3*i+j];
55 <            oldEta[i][j] = eta[i][j];
56 <          }
57 <        }
58 <
57 <      }
44 >  // retrieve eta array from simInfo if it exists
45 >  data = info->getProperty(ETAVALUE_ID);
46 >  if(data != NULL){
47 >    
48 >    int test = data->getDarray(etaArray);
49 >    
50 >    if( test == 9 ){
51 >      
52 >      for(i = 0; i < 3; i++){
53 >        for (j = 0; j < 3; j++){
54 >          eta[i][j] = etaArray[3*i+j];
55 >          oldEta[i][j] = eta[i][j];
56 >        }
57 >      }    
58 >      delete[] etaArray;
59      }
60 <
60 >    else
61 >      std::cerr << "NPTf error: etaArray is not length 9 (actual = " << test
62 >                << ").\n"
63 >                << "            Simulation wil proceed with eta = 0;\n";
64 >  }
65   }
66  
67 < template<typename T> NPTf<T>::~NPTf() {
67 > NPTf::~NPTf() {
68  
69    // empty for now
70   }
71  
72 < template<typename T> void NPTf<T>::resetIntegrator() {
72 > void NPTf::resetIntegrator() {
73  
74    int i, j;
75  
# Line 72 | Line 77 | template<typename T> void NPTf<T>::resetIntegrator() {
77      for (j = 0; j < 3; j++)
78        eta[i][j] = 0.0;
79  
80 <  T::resetIntegrator();
80 >  NPT::resetIntegrator();
81   }
82  
83 < template<typename T> void NPTf<T>::evolveEtaA() {
83 > void NPTf::evolveEtaA() {
84  
85    int i, j;
86  
# Line 94 | Line 99 | template<typename T> void NPTf<T>::evolveEtaA() {
99        oldEta[i][j] = eta[i][j];
100   }
101  
102 < template<typename T> void NPTf<T>::evolveEtaB() {
102 > void NPTf::evolveEtaB() {
103  
104    int i,j;
105  
# Line 114 | Line 119 | template<typename T> void NPTf<T>::evolveEtaB() {
119    }
120   }
121  
122 < template<typename T> void NPTf<T>::getVelScaleA(double sc[3], double vel[3]) {
122 > void NPTf::getVelScaleA(double sc[3], double vel[3]) {
123    int i,j;
124    double vScale[3][3];
125  
# Line 131 | Line 136 | template<typename T> void NPTf<T>::getVelScaleA(double
136    info->matVecMul3( vScale, vel, sc );
137   }
138  
139 < template<typename T> void NPTf<T>::getVelScaleB(double sc[3], int index ){
139 > void NPTf::getVelScaleB(double sc[3], int index ){
140    int i,j;
141    double myVel[3];
142    double vScale[3][3];
143  
144 + //   std::cerr << "velScaleB chi = " << chi << "\n";
145 +
146    for (i = 0; i < 3; i++ ) {
147      for (j = 0; j < 3; j++ ) {
148        vScale[i][j] = eta[i][j];
# Line 149 | Line 156 | template<typename T> void NPTf<T>::getVelScaleB(double
156    for (j = 0; j < 3; j++)
157      myVel[j] = oldVel[3*index + j];
158  
159 + //   std::cerr << "velScaleB = \n"
160 + //          << "[ " << vScale[0][0] << " , " << vScale[0][1] << " , " << vScale[0][2] << "]\n"
161 + //          << "[ " << vScale[1][0] << " , " << vScale[1][1] << " , " << vScale[1][2] << "]\n"
162 + //          << "[ " << vScale[2][0] << " , " << vScale[2][1] << " , " << vScale[2][2] << "]\n\n";
163 +
164 +
165 + //  std::cerr << "myVel " << index << " in => "
166 + //          << myVel[0] << ", " << myVel[1] << ", " << myVel[2] << "\n";
167 +
168    info->matVecMul3( vScale, myVel, sc );
169 +
170 + //  std::cerr << "sc " << index << " out => "
171 + //          << sc[0] << ", " << sc[1] << ", " << sc[2] << "\n";
172   }
173  
174 < template<typename T> void NPTf<T>::getPosScale(double pos[3], double COM[3],
174 > void NPTf::getPosScale(double pos[3], double COM[3],
175                                                 int index, double sc[3]){
176    int j;
177    double rj[3];
# Line 163 | Line 182 | template<typename T> void NPTf<T>::getPosScale(double
182    info->matVecMul3( eta, rj, sc );
183   }
184  
185 < template<typename T> void NPTf<T>::scaleSimBox( void ){
185 > void NPTf::scaleSimBox( void ){
186  
187    int i,j,k;
188    double scaleMat[3][3];
# Line 239 | Line 258 | template<typename T> void NPTf<T>::scaleSimBox( void )
258    }
259   }
260  
261 < template<typename T> bool NPTf<T>::etaConverged() {
261 > bool NPTf::etaConverged() {
262    int i;
263    double diffEta, sumEta;
264  
# Line 252 | Line 271 | template<typename T> bool NPTf<T>::etaConverged() {
271    return ( diffEta <= etaTolerance );
272   }
273  
274 < template<typename T> double NPTf<T>::getConservedQuantity(void){
274 > double NPTf::getConservedQuantity(void){
275  
276    double conservedQuantity;
277    double totalEnergy;
# Line 294 | Line 313 | template<typename T> double NPTf<T>::getConservedQuant
313  
314   }
315  
316 < template<typename T> string NPTf<T>::getAdditionalParameters(void){
298 <  string parameters;
299 <  const int BUFFERSIZE = 2000; // size of the read buffer
300 <  char buffer[BUFFERSIZE];
316 > char* NPTf::getAdditionalParameters(void){
317  
318 <  sprintf(buffer,"\t%lf\t%lf;", chi, integralOfChidt);
319 <  parameters += buffer;
318 >  sprintf(addParamBuffer,
319 >          "\t%G\t%G;"
320 >          "\t%G\t%G\t%G;"
321 >          "\t%G\t%G\t%G;"
322 >          "\t%G\t%G\t%G;",
323 >          chi, integralOfChidt,
324 >          eta[0][0], eta[0][1], eta[0][2],
325 >          eta[1][0], eta[1][1], eta[1][2],
326 >          eta[2][0], eta[2][1], eta[2][2]
327 >          );
328  
329 <  for(int i = 0; i < 3; i++){
306 <    sprintf(buffer,"\t%lf\t%lf\t%lf;", eta[3*i], eta[3*i+1], eta[3*i+2]);
307 <    parameters += buffer;
308 <  }
309 <
310 <  return parameters;
311 <
329 >  return addParamBuffer;
330   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines