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

Comparing trunk/OOPSE/libmdtools/Integrator.cpp (file contents):
Revision 600 by gezelter, Mon Jul 14 22:38:13 2003 UTC vs.
Revision 677 by tim, Mon Aug 11 19:41:36 2003 UTC

# Line 11 | Line 11 | Integrator::Integrator( SimInfo *theInfo, ForceFields*
11   #include "simError.h"
12  
13  
14 < Integrator::Integrator( SimInfo *theInfo, ForceFields* the_ff ){
14 > template<typename T> Integrator<T>::Integrator( SimInfo *theInfo, ForceFields* the_ff ) {
15    
16    info = theInfo;
17    myFF = the_ff;
# Line 27 | Line 27 | Integrator::Integrator( SimInfo *theInfo, ForceFields*
27  
28    nAtoms = info->n_atoms;
29  
30  std::cerr << "integ nAtoms = "  << nAtoms << "\n";
31
30    // check for constraints
31    
32    constrainedA    = NULL;
# Line 43 | Line 41 | Integrator::~Integrator() {
41    checkConstraints();
42   }
43  
44 < Integrator::~Integrator() {
44 > template<typename T> Integrator<T>::~Integrator() {
45    
46    if( nConstrained ){
47      delete[] constrainedA;
# Line 56 | Line 54 | void Integrator::checkConstraints( void ){
54    
55   }
56  
57 < void Integrator::checkConstraints( void ){
57 > template<typename T> void Integrator<T>::checkConstraints( void ){
58  
59  
60    isConstrained = 0;
# Line 75 | Line 73 | void Integrator::checkConstraints( void ){
73        
74        constrained = theArray[j]->is_constrained();
75  
78      std::cerr << "Is the folowing bond constrained \n";
79      theArray[j]->printMe();
80      
76        if(constrained){
82        
83        std::cerr << "Yes\n";
77  
78          dummy_plug = theArray[j]->get_constraint();
79          temp_con[nConstrained].set_a( dummy_plug->get_a() );
# Line 90 | Line 83 | void Integrator::checkConstraints( void ){
83          nConstrained++;
84          constrained = 0;
85        }
93      else std::cerr << "No.\n";
86      }
87  
88      theArray = (SRI**) molecules[i].getMyBends();
# Line 163 | Line 155 | void Integrator::integrate( void ){
155   }
156  
157  
158 < void Integrator::integrate( void ){
158 > template<typename T> void Integrator<T>::integrate( void ){
159  
160    int i, j;                         // loop counters
161  
# Line 175 | Line 167 | void Integrator::integrate( void ){
167    double currSample;
168    double currThermal;
169    double currStatus;
178  double currTime;
170  
171    int calcPot, calcStress;
172    int isError;
# Line 192 | Line 183 | void Integrator::integrate( void ){
183  
184    // initialize the forces before the first step
185  
186 <  myFF->doForces(1,1);
186 >  calcForce(1, 1);
187    
188    if( info->setTemp ){
189      
190 <    tStats->velocitize();
190 >    thermalize();
191    }
192    
202  dumpOut->writeDump( 0.0 );
203  statOut->writeStat( 0.0 );
204  
193    calcPot     = 0;
194    calcStress  = 0;
195    currSample  = sampleTime;
196    currThermal = thermalTime;
197    currStatus  = statusTime;
210  currTime    = 0.0;;
198  
199 +  dumpOut->writeDump( info->getTime() );
200 +  statOut->writeStat( info->getTime() );
201  
202    readyCheck();
203  
# Line 218 | Line 207 | void Integrator::integrate( void ){
207    MPIcheckPoint();
208   #endif // is_mpi
209  
210 <  while( currTime < runTime ){
210 >  while( info->getTime() < runTime ){
211  
212 <    if( (currTime+dt) >= currStatus ){
212 >    if( (info->getTime()+dt) >= currStatus ){
213        calcPot = 1;
214        calcStress = 1;
215      }
216  
228    std::cerr << currTime << "\n";
229
217      integrateStep( calcPot, calcStress );
218        
219 <    currTime += dt;
219 >    info->incrTime(dt);
220  
221      if( info->setTemp ){
222 <      if( currTime >= currThermal ){
223 <        tStats->velocitize();
222 >      if( info->getTime() >= currThermal ){
223 >        thermalize();
224          currThermal += thermalTime;
225        }
226      }
227  
228 <    if( currTime >= currSample ){
229 <      dumpOut->writeDump( currTime );
228 >    if( info->getTime() >= currSample ){
229 >      dumpOut->writeDump( info->getTime() );
230        currSample += sampleTime;
231      }
232  
233 <    if( currTime >= currStatus ){
234 <      statOut->writeStat( currTime );
233 >    if( info->getTime() >= currStatus ){
234 >      statOut->writeStat( info->getTime() );
235        calcPot = 0;
236        calcStress = 0;
237        currStatus += statusTime;
# Line 258 | Line 245 | void Integrator::integrate( void ){
245  
246    }
247  
248 <  dumpOut->writeFinal(currTime);
248 >  dumpOut->writeFinal(info->getTime());
249  
250    delete dumpOut;
251    delete statOut;
252   }
253  
254 < void Integrator::integrateStep( int calcPot, int calcStress ){
254 > template<typename T> void Integrator<T>::integrateStep( int calcPot, int calcStress ){
255  
256  
257        
# Line 274 | Line 261 | void Integrator::integrateStep( int calcPot, int calcS
261    moveA();
262    if( nConstrained ) constrainA();
263  
264 +  
265 + #ifdef IS_MPI
266 +  strcpy( checkPointMsg, "Succesful moveA\n" );
267 +  MPIcheckPoint();
268 + #endif // is_mpi
269 +  
270 +
271    // calc forces
272  
273 <  myFF->doForces(calcPot,calcStress);
273 >  calcForce(calcPot,calcStress);
274  
275 + #ifdef IS_MPI
276 +  strcpy( checkPointMsg, "Succesful doForces\n" );
277 +  MPIcheckPoint();
278 + #endif // is_mpi
279 +  
280 +
281    // finish the velocity  half step
282    
283    moveB();
284    if( nConstrained ) constrainB();
285 <  
285 >  
286 > #ifdef IS_MPI
287 >  strcpy( checkPointMsg, "Succesful moveB\n" );
288 >  MPIcheckPoint();
289 > #endif // is_mpi
290 >  
291 >
292   }
293  
294  
295 < void Integrator::moveA( void ){
295 > template<typename T> void Integrator<T>::moveA( void ){
296    
297    int i, j;
298    DirectionalAtom* dAtom;
# Line 365 | Line 371 | void Integrator::moveB( void ){
371   }
372  
373  
374 < void Integrator::moveB( void ){
374 > template<typename T> void Integrator<T>::moveB( void ){
375    int i, j;
376    DirectionalAtom* dAtom;
377    double Tb[3], ji[3];
# Line 407 | Line 413 | void Integrator::preMove( void ){
413    }
414   }
415  
416 < void Integrator::preMove( void ){
416 > template<typename T> void Integrator<T>::preMove( void ){
417    int i, j;
418    double pos[3];
419  
# Line 425 | Line 431 | void Integrator::constrainA(){
431    }  
432   }
433  
434 < void Integrator::constrainA(){
434 > template<typename T> void Integrator<T>::constrainA(){
435  
436    int i,j,k;
437    int done;
# Line 576 | Line 582 | void Integrator::constrainB( void ){
582  
583   }
584  
585 < void Integrator::constrainB( void ){
585 > template<typename T> void Integrator<T>::constrainB( void ){
586    
587    int i,j,k;
588    int done;
# Line 685 | Line 691 | void Integrator::rotate( int axes1, int axes2, double
691  
692   }
693  
694 < void Integrator::rotate( int axes1, int axes2, double angle, double ji[3],
694 > template<typename T> void Integrator<T>::rotate( int axes1, int axes2, double angle, double ji[3],
695                           double A[3][3] ){
696  
697    int i,j,k;
# Line 766 | Line 772 | void Integrator::rotate( int axes1, int axes2, double
772      }
773    }
774   }
775 +
776 + template<typename T> void Integrator<T>::calcForce( int calcPot, int calcStress ){
777 +   myFF->doForces(calcPot,calcStress);
778 +  
779 + }
780 +
781 + template<typename T> void Integrator<T>::thermalize(){
782 +  tStats->velocitize();  
783 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines