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 784 by mmeineke, Wed Sep 24 19:34:39 2003 UTC vs.
Revision 843 by mmeineke, Wed Oct 29 20:41:39 2003 UTC

# Line 1 | Line 1
1   #include <iostream>
2 < #include <cstdlib>
3 < #include <cmath>
2 > #include <stdlib.h>
3 > #include <math.h>
4  
5   #ifdef IS_MPI
6   #include "mpiSimulation.hpp"
# Line 25 | Line 25 | template<typename T> Integrator<T>::Integrator(SimInfo
25    if (info->the_integrator != NULL){
26      delete info->the_integrator;
27    }
28 <  
28 >
29    nAtoms = info->n_atoms;
30  
31    // check for constraints
# Line 146 | Line 146 | template<typename T> void Integrator<T>::integrate(voi
146  
147  
148   template<typename T> void Integrator<T>::integrate(void){
149  int i, j;                         // loop counters
149  
150    double runTime = info->run_time;
151    double sampleTime = info->sampleTime;
# Line 159 | Line 158 | template<typename T> void Integrator<T>::integrate(voi
158    double currThermal;
159    double currStatus;
160    double currReset;
161 <  
161 >
162    int calcPot, calcStress;
164  int isError;
163  
164    tStats = new Thermo(info);
165    statOut = new StatWriter(info);
166    dumpOut = new DumpWriter(info);
167  
168    atoms = info->atoms;
171  DirectionalAtom* dAtom;
169  
170    dt = info->dt;
171    dt2 = 0.5 * dt;
# Line 182 | Line 179 | template<typename T> void Integrator<T>::integrate(voi
179    if (nConstrained){
180      preMove();
181      constrainA();
182 <    calcForce(1, 1);    
182 >    calcForce(1, 1);
183      constrainB();
184    }
185    
# Line 201 | Line 198 | template<typename T> void Integrator<T>::integrate(voi
198    statOut->writeStat(info->getTime());
199  
200  
204
201   #ifdef IS_MPI
202    strcpy(checkPointMsg, "The integrator is ready to go.");
203    MPIcheckPoint();
# Line 230 | Line 226 | template<typename T> void Integrator<T>::integrate(voi
226      }
227  
228      if (info->getTime() >= currStatus){
229 <      statOut->writeStat(info->getTime());
230 <      calcPot = 0;
229 >      statOut->writeStat(info->getTime());
230 >      calcPot = 0;
231        calcStress = 0;
232        currStatus += statusTime;
233 <    }
233 >    }
234  
235      if (info->resetIntegrator){
236        if (info->getTime() >= currReset){
# Line 249 | Line 245 | template<typename T> void Integrator<T>::integrate(voi
245   #endif // is_mpi
246    }
247  
248 <  dumpOut->writeFinal(info->getTime());
248 >
249 >  // write the last frame
250 >  dumpOut->writeDump(info->getTime());
251  
252    delete dumpOut;
253    delete statOut;
# Line 367 | Line 365 | template<typename T> void Integrator<T>::moveB(void){
365      if (atoms[i]->isDirectional()){
366        dAtom = (DirectionalAtom *) atoms[i];
367  
368 <      // get and convert the torque to body frame      
368 >      // get and convert the torque to body frame
369  
370        dAtom->getTrq(Tb);
371        dAtom->lab2Body(Tb);
# Line 405 | Line 403 | template<typename T> void Integrator<T>::constrainA(){
403   }
404  
405   template<typename T> void Integrator<T>::constrainA(){
406 <  int i, j, k;
406 >  int i, j;
407    int done;
408    double posA[3], posB[3];
409    double velA[3], velB[3];
# Line 549 | Line 547 | template<typename T> void Integrator<T>::constrainB(vo
547   }
548  
549   template<typename T> void Integrator<T>::constrainB(void){
550 <  int i, j, k;
550 >  int i, j;
551    int done;
552    double posA[3], posB[3];
553    double velA[3], velB[3];
# Line 558 | Line 556 | template<typename T> void Integrator<T>::constrainB(vo
556    int a, b, ax, ay, az, bx, by, bz;
557    double rma, rmb;
558    double dx, dy, dz;
559 <  double rabsq, pabsq, rvab;
562 <  double diffsq;
559 >  double rvab;
560    double gab;
561    int iteration;
562  
# Line 660 | Line 657 | template<typename T> void Integrator<T>::rotationPropa
657  
658    dAtom->getA(A);
659    dAtom->getI(I);
660 <  
661 <  // rotate about the x-axis      
660 >
661 >  // rotate about the x-axis
662    angle = dt2 * ji[0] / I[0][0];
663 <  this->rotate( 1, 2, angle, ji, A );
664 <  
663 >  this->rotate( 1, 2, angle, ji, A );
664 >
665    // rotate about the y-axis
666    angle = dt2 * ji[1] / I[1][1];
667    this->rotate( 2, 0, angle, ji, A );
668 <  
668 >
669    // rotate about the z-axis
670    angle = dt * ji[2] / I[2][2];
671    this->rotate( 0, 1, angle, ji, A);
672 <  
672 >
673    // rotate about the y-axis
674    angle = dt2 * ji[1] / I[1][1];
675    this->rotate( 2, 0, angle, ji, A );
676 <  
676 >
677    // rotate about the x-axis
678    angle = dt2 * ji[0] / I[0][0];
679    this->rotate( 1, 2, angle, ji, A );
680 <  
681 <  dAtom->setA( A  );    
680 >
681 >  dAtom->setA( A  );
682   }
683  
684   template<typename T> void Integrator<T>::rotate(int axes1, int axes2,
# Line 749 | Line 746 | template<typename T> void Integrator<T>::rotate(int ax
746      }
747    }
748  
749 <  // rotate the Rotation matrix acording to:
749 >  // rotate the Rotation matrix acording to:
750    //            A[][] = A[][] * transpose(rot[][])
751  
752  
# Line 778 | Line 775 | template<typename T> double Integrator<T>::getConserve
775   template<typename T> double Integrator<T>::getConservedQuantity(void){
776    return tStats->getTotalE();
777   }
778 + template<typename T> string Integrator<T>::getAdditionalParameters(void){
779 +  //By default, return a null string
780 +  //The reason we use string instead of char* is that if we use char*, we will
781 +  //return a pointer point to local variable which might cause problem
782 +  return string();
783 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines