ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mdtools/md_code/Thermo.cpp
(Generate patch)

Comparing trunk/mdtools/md_code/Thermo.cpp (file contents):
Revision 223 by chuckv, Fri Jan 3 22:04:50 2003 UTC vs.
Revision 261 by chuckv, Mon Feb 3 21:15:59 2003 UTC

# Line 1 | Line 1
1   #include <cmath>
2 + #include <iostream>
3 + using namespace std;
4 +
5 + #ifdef IS_MPI
6 + #include <mpi.h>
7   #include <mpi++.h>
8 + #endif //is_mpi
9  
10   #include "Thermo.hpp"
11   #include "SRI.hpp"
# Line 10 | Line 16 | Thermo::Thermo( SimInfo* the_entry_plug ) {
16  
17   Thermo::Thermo( SimInfo* the_entry_plug ) {
18    entry_plug = the_entry_plug;
19 <  baseSeed = BASE_SEED;
19 >  int baseSeed = BASE_SEED;
20 >  
21    gaussStream = new gaussianSPRNG( baseSeed );
22   }
23  
# Line 60 | Line 67 | double Thermo::getKinetic(){
67      }
68    }
69   #ifdef IS_MPI
70 <  MPI_COMM_WORLD.Allreduce(&kinetic,&kinetic_global,1,MPI_DOUBLE,MPI_SUM);
70 >  MPI::COMM_WORLD.Allreduce(&kinetic,&kinetic_global,1,MPI_DOUBLE,MPI_SUM);
71    kinetic = kinetic_global;
72 < #endif
72 > #endif //is_mpi
73  
74    kinetic = kinetic * 0.5 / e_convert;
75  
# Line 81 | Line 88 | double Thermo::getPotential(){
88  
89    potential = 0.0;
90    potential_global = 0.0;
91 <  potential += entry_plug->longRange->get_potential();;
91 >  potential += entry_plug->lrPot;
92  
93    // std::cerr << "long range potential: " << potential << "\n";
94    for( el=0; el<nSRI; el++ ){
# Line 91 | Line 98 | double Thermo::getPotential(){
98  
99    // Get total potential for entire system from MPI.
100   #ifdef IS_MPI
101 <  MPI_COMM_WORLD.Allreduce(&potential,&potential_global,1,MPI_DOUBLE,MPI_SUM);
101 >  MPI::COMM_WORLD.Allreduce(&potential,&potential_global,1,MPI_DOUBLE,MPI_SUM);
102    potential = potential_global;
103 < #endif
103 > #endif // is_mpi
104  
105    return potential;
106   }
# Line 178 | Line 185 | void Thermo::velocitize() {
185         single processor version of the code, but SPRNG should
186         still be preferred for consistency.
187      */
188 +
189   #ifdef IS_MPI
190   #error "SPRNG random number generator must be used for MPI"
191   #else
192 < #warning "Using drand48 for random number generation"
193 < #endif  
192 >    // warning "Using drand48 for random number generation"
193 > #endif  // is_mpi
194 >
195      x = drand48();
196      y = drand48();
197      vx = vbar * sqrt( -2.0 * log(x)) * cos(2 * M_PI * y);
# Line 194 | Line 203 | void Thermo::velocitize() {
203      x = drand48();
204      y = drand48();
205      vz = vbar * sqrt( -2.0 * log(x)) * cos(2 * M_PI * y);
197 #endif
206  
207 + #endif // use_spring
208 +
209   #ifdef USE_SPRNG
210      vx = vbar * gaussStream->getGaussian();
211      vy = vbar * gaussStream->getGaussian();
212      vz = vbar * gaussStream->getGaussian();
213 < #endif
213 > #endif // use_spring
214  
215      atoms[vr]->set_vx( vx );
216      atoms[vr]->set_vy( vy );
# Line 249 | Line 259 | void Thermo::velocitize() {
259        if( atoms[i]->isDirectional() ){
260          
261          dAtom = (DirectionalAtom *)atoms[i];
262 +
263 + #ifndef USE_SPRNG
264 +
265   #ifdef IS_MPI
266   #error "SPRNG random number generator must be used for MPI"
267 < #else
268 < #warning "Using drand48 for random number generation"
269 < #endif  
267 > #else  // is_mpi
268 >        //warning "Using drand48 for random number generation"
269 > #endif   // is_MPI
270          
271          vbar = sqrt( 2.0 * kebar * dAtom->getIxx() );
272          x = drand48();
# Line 269 | Line 282 | void Thermo::velocitize() {
282          x = drand48();
283          y = drand48();
284          jz = vbar * sqrt( -2.0 * log(x)) * cos(2 * M_PI * y);
285 < #endif
286 < #ifdef USE_SPRNG
285 >
286 > #else //use_sprng
287 >
288          vbar = sqrt( 2.0 * kebar * dAtom->getIxx() );
289          jx = vbar * gaussStream->getGaussian();
290  
# Line 279 | Line 293 | void Thermo::velocitize() {
293  
294          vbar = sqrt( 2.0 * kebar * dAtom->getIzz() );
295          jz = vbar * gaussStream->getGaussian();
296 < #endif
296 > #endif //use_sprng
297          
298          dAtom->setJx( jx );
299          dAtom->setJy( jy );

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines