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

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

# Line 1 | Line 1
1 + #include <iostream>
2   #include <math.h>
3 +
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> NPTi<T>::NPTi ( SimInfo *theInfo, ForceFields* the_ff):
30 <  T( theInfo, the_ff )
29 > NPTi::NPTi ( SimInfo *theInfo, ForceFields* the_ff):
30 >  NPT( theInfo, the_ff )
31   {
32    GenericData* data;
33 <  DoubleArrayData * etaValue;
34 <  vector<double> etaArray;
33 >  double *etaArray;
34 >  int test;
35  
36    eta = 0.0;
37    oldEta = 0.0;
38  
39 <  // retrieve eta from simInfo if
39 >  // retrieve eta array from simInfo if it exists
40    data = info->getProperty(ETAVALUE_ID);
41 <  if(data){
42 <    etaValue = dynamic_cast<DoubleArrayData*>(data);
43 <
44 <    if(etaValue){
45 <      etaArray = etaValue->getData();
41 >  if(data != NULL){
42 >    
43 >    test = data->getDarray(etaArray);
44 >    
45 >    if( test == 9 ){
46 >      
47        eta = etaArray[0];
48 <      oldEta = eta;
48 >      delete[] etaArray;
49      }
50 +    else
51 +      std::cerr << "NPTi error: etaArray is not length 9 (actual = " << test
52 +                << ").\n"
53 +                << "            Simulation wil proceed with eta = 0;\n";
54    }
47
55   }
56  
57 < template<typename T> NPTi<T>::~NPTi() {
57 > NPTi::~NPTi() {
58    //nothing for now
59   }
60  
61 < template<typename T> void NPTi<T>::resetIntegrator() {
61 > void NPTi::resetIntegrator() {
62    eta = 0.0;
63 <  T::resetIntegrator();
63 >  NPT::resetIntegrator();
64   }
65  
66 < template<typename T> void NPTi<T>::evolveEtaA() {
66 > void NPTi::evolveEtaA() {
67    eta += dt2 * ( instaVol * (instaPress - targetPressure) /
68                   (p_convert*NkBT*tb2));
69    oldEta = eta;
70   }
71  
72 < template<typename T> void NPTi<T>::evolveEtaB() {
72 > void NPTi::evolveEtaB() {
73  
74    prevEta = eta;
75    eta = oldEta + dt2 * ( instaVol * (instaPress - targetPressure) /
76                   (p_convert*NkBT*tb2));
77   }
78  
79 < template<typename T> void NPTi<T>::getVelScaleA(double sc[3], double vel[3]) {
79 > void NPTi::getVelScaleA(double sc[3], double vel[3]) {
80    int i;
81  
82    for(i=0; i<3; i++) sc[i] = vel[i] * ( chi + eta );
83   }
84  
85 < template<typename T> void NPTi<T>::getVelScaleB(double sc[3], int index ){
85 > void NPTi::getVelScaleB(double sc[3], int index ){
86    int i;
87  
88    for(i=0; i<3; i++) sc[i] = oldVel[index*3 + i] * ( chi + eta );
89   }
90  
91  
92 < template<typename T> void NPTi<T>::getPosScale(double pos[3], double COM[3],
92 > void NPTi::getPosScale(double pos[3], double COM[3],
93                                                 int index, double sc[3]){
94    int j;
95  
# Line 93 | Line 100 | template<typename T> void NPTi<T>::getPosScale(double
100      sc[j] *= eta;
101   }
102  
103 < template<typename T> void NPTi<T>::scaleSimBox( void ){
103 > void NPTi::scaleSimBox( void ){
104  
105    double scaleFactor;
106  
# Line 113 | Line 120 | template<typename T> void NPTi<T>::scaleSimBox( void )
120  
121   }
122  
123 < template<typename T> bool NPTi<T>::etaConverged() {
123 > bool NPTi::etaConverged() {
124  
125    return ( fabs(prevEta - eta) <= etaTolerance );
126   }
127  
128 < template<typename T> double NPTi<T>::getConservedQuantity(void){
128 > double NPTi::getConservedQuantity(void){
129  
130    double conservedQuantity;
131    double Energy;
# Line 153 | Line 160 | template<typename T> double NPTi<T>::getConservedQuant
160    return conservedQuantity;
161   }
162  
163 < template<typename T> string NPTi<T>::getAdditionalParameters(void){
157 <  string parameters;
158 <  const int BUFFERSIZE = 2000; // size of the read buffer
159 <  char buffer[BUFFERSIZE];
163 > char* NPTi::getAdditionalParameters(void){
164  
165 <  sprintf(buffer,"\t%lf\t%lf;", chi, integralOfChidt);
166 <  parameters += buffer;
165 >  sprintf(addParamBuffer,
166 >          "\t%G\t%G;"
167 >          "\t%G\t%0.0\t%0.0;"
168 >          "\t%0.0\t%G\t%0.0;"
169 >          "\t%0.0\t%0.0\t%G;",
170 >          chi, integralOfChidt,
171 >          eta, eta, eta
172 >          );
173  
174 <  sprintf(buffer,"\t%lf\t0\t0;", eta);
165 <  parameters += buffer;
166 <
167 <  sprintf(buffer,"\t0\t%lf\t0;", eta);
168 <  parameters += buffer;
169 <
170 <  sprintf(buffer,"\t0\t0\t%lf;", eta);
171 <  parameters += buffer;
172 <
173 <  return parameters;
174 <
174 >  return addParamBuffer;
175   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines