ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/brains/Thermo.cpp
(Generate patch)

Comparing trunk/src/brains/Thermo.cpp (file contents):
Revision 541 by tim, Sun May 22 21:05:15 2005 UTC vs.
Revision 963 by tim, Wed May 17 21:51:42 2006 UTC

# Line 53 | Line 53 | namespace oopse {
53  
54   namespace oopse {
55  
56 <  double Thermo::getKinetic() {
56 >  RealType Thermo::getKinetic() {
57      SimInfo::MoleculeIterator miter;
58      std::vector<StuntDouble*>::iterator iiter;
59      Molecule* mol;
# Line 64 | Line 64 | namespace oopse {
64      int i;
65      int j;
66      int k;
67 <    double kinetic = 0.0;
68 <    double kinetic_global = 0.0;
67 >    RealType kinetic = 0.0;
68 >    RealType kinetic_global = 0.0;
69      
70      for (mol = info_->beginMolecule(miter); mol != NULL; mol = info_->nextMolecule(miter)) {
71        for (integrableObject = mol->beginIntegrableObject(iiter); integrableObject != NULL;
72             integrableObject = mol->nextIntegrableObject(iiter)) {
73 <
74 <        double mass = integrableObject->getMass();
73 >        
74 >        RealType mass = integrableObject->getMass();
75          Vector3d vel = integrableObject->getVel();
76 <
76 >        
77          kinetic += mass * (vel[0]*vel[0] + vel[1]*vel[1] + vel[2]*vel[2]);
78 <
78 >        
79          if (integrableObject->isDirectional()) {
80            angMom = integrableObject->getJ();
81            I = integrableObject->getI();
# Line 96 | Line 96 | namespace oopse {
96      
97   #ifdef IS_MPI
98  
99 <    MPI_Allreduce(&kinetic, &kinetic_global, 1, MPI_DOUBLE, MPI_SUM,
99 >    MPI_Allreduce(&kinetic, &kinetic_global, 1, MPI_REALTYPE, MPI_SUM,
100                    MPI_COMM_WORLD);
101      kinetic = kinetic_global;
102  
# Line 107 | Line 107 | namespace oopse {
107      return kinetic;
108    }
109  
110 <  double Thermo::getPotential() {
111 <    double potential = 0.0;
110 >  RealType Thermo::getPotential() {
111 >    RealType potential = 0.0;
112      Snapshot* curSnapshot = info_->getSnapshotManager()->getCurrentSnapshot();
113 <    double potential_local = curSnapshot->statData[Stats::LONG_RANGE_POTENTIAL] +
114 <      curSnapshot->statData[Stats::SHORT_RANGE_POTENTIAL] ;
113 >    RealType shortRangePot_local =  curSnapshot->statData[Stats::SHORT_RANGE_POTENTIAL] ;
114  
115      // Get total potential for entire system from MPI.
116  
117   #ifdef IS_MPI
118  
119 <    MPI_Allreduce(&potential_local, &potential, 1, MPI_DOUBLE, MPI_SUM,
119 >    MPI_Allreduce(&shortRangePot_local, &potential, 1, MPI_REALTYPE, MPI_SUM,
120                    MPI_COMM_WORLD);
121 +    potential += curSnapshot->statData[Stats::LONG_RANGE_POTENTIAL];
122  
123   #else
124  
125 <    potential = potential_local;
125 >    potential = shortRangePot_local + curSnapshot->statData[Stats::LONG_RANGE_POTENTIAL];
126  
127   #endif // is_mpi
128  
129      return potential;
130    }
131  
132 <  double Thermo::getTotalE() {
133 <    double total;
132 >  RealType Thermo::getTotalE() {
133 >    RealType total;
134  
135      total = this->getKinetic() + this->getPotential();
136      return total;
137    }
138  
139 <  double Thermo::getTemperature() {
139 >  RealType Thermo::getTemperature() {
140      
141 <    double temperature = ( 2.0 * this->getKinetic() ) / (info_->getNdf()* OOPSEConstant::kb );
141 >    RealType temperature = ( 2.0 * this->getKinetic() ) / (info_->getNdf()* OOPSEConstant::kb );
142      return temperature;
143    }
144  
145 <  double Thermo::getVolume() {
145 >  RealType Thermo::getVolume() {
146      Snapshot* curSnapshot = info_->getSnapshotManager()->getCurrentSnapshot();
147      return curSnapshot->getVolume();
148    }
149  
150 <  double Thermo::getPressure() {
150 >  RealType Thermo::getPressure() {
151  
152      // Relies on the calculation of the full molecular pressure tensor
153  
154  
155      Mat3x3d tensor;
156 <    double pressure;
156 >    RealType pressure;
157  
158      tensor = getPressureTensor();
159  
# Line 162 | Line 162 | namespace oopse {
162      return pressure;
163    }
164  
165 <  double Thermo::getPressure(int direction) {
165 >  RealType Thermo::getPressure(int direction) {
166  
167      // Relies on the calculation of the full molecular pressure tensor
168  
169            
170      Mat3x3d tensor;
171 <    double pressure;
171 >    RealType pressure;
172  
173      tensor = getPressureTensor();
174  
# Line 195 | Line 195 | namespace oopse {
195        for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL;
196             integrableObject = mol->nextIntegrableObject(j)) {
197  
198 <        double mass = integrableObject->getMass();
198 >        RealType mass = integrableObject->getMass();
199          Vector3d vcom = integrableObject->getVel();
200          p_local += mass * outProduct(vcom, vcom);        
201        }
202      }
203      
204   #ifdef IS_MPI
205 <    MPI_Allreduce(p_local.getArrayPointer(), p_global.getArrayPointer(), 9, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
205 >    MPI_Allreduce(p_local.getArrayPointer(), p_global.getArrayPointer(), 9, MPI_REALTYPE, MPI_SUM, MPI_COMM_WORLD);
206   #else
207      p_global = p_local;
208   #endif // is_mpi
209  
210 <    double volume = this->getVolume();
210 >    RealType volume = this->getVolume();
211      Snapshot* curSnapshot = info_->getSnapshotManager()->getCurrentSnapshot();
212      Mat3x3d tau = curSnapshot->statData.getTau();
213  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines