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 254 by chuckv, Thu Jan 30 20:03:37 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 >  cerr << "creating thermo stream\n";
22    gaussStream = new gaussianSPRNG( baseSeed );
23 +  cerr << "created thermo stream\n";
24   }
25  
26   Thermo::~Thermo(){
# Line 60 | Line 69 | double Thermo::getKinetic(){
69      }
70    }
71   #ifdef IS_MPI
72 <  MPI_COMM_WORLD.Allreduce(&kinetic,&kinetic_global,1,MPI_DOUBLE,MPI_SUM);
72 >  MPI::COMM_WORLD.Allreduce(&kinetic,&kinetic_global,1,MPI_DOUBLE,MPI_SUM);
73    kinetic = kinetic_global;
74 < #endif
74 > #endif //is_mpi
75  
76    kinetic = kinetic * 0.5 / e_convert;
77  
# Line 81 | Line 90 | double Thermo::getPotential(){
90  
91    potential = 0.0;
92    potential_global = 0.0;
93 <  potential += entry_plug->longRange->get_potential();;
93 >  potential += entry_plug->lrPot;
94  
95    // std::cerr << "long range potential: " << potential << "\n";
96    for( el=0; el<nSRI; el++ ){
# Line 91 | Line 100 | double Thermo::getPotential(){
100  
101    // Get total potential for entire system from MPI.
102   #ifdef IS_MPI
103 <  MPI_COMM_WORLD.Allreduce(&potential,&potential_global,1,MPI_DOUBLE,MPI_SUM);
103 >  MPI::COMM_WORLD.Allreduce(&potential,&potential_global,1,MPI_DOUBLE,MPI_SUM);
104    potential = potential_global;
105 < #endif
105 > #endif // is_mpi
106  
107    return potential;
108   }
# Line 178 | Line 187 | void Thermo::velocitize() {
187         single processor version of the code, but SPRNG should
188         still be preferred for consistency.
189      */
190 +
191   #ifdef IS_MPI
192   #error "SPRNG random number generator must be used for MPI"
193   #else
194 < #warning "Using drand48 for random number generation"
195 < #endif  
194 >    // warning "Using drand48 for random number generation"
195 > #endif  // is_mpi
196 >
197      x = drand48();
198      y = drand48();
199      vx = vbar * sqrt( -2.0 * log(x)) * cos(2 * M_PI * y);
# Line 194 | Line 205 | void Thermo::velocitize() {
205      x = drand48();
206      y = drand48();
207      vz = vbar * sqrt( -2.0 * log(x)) * cos(2 * M_PI * y);
197 #endif
208  
209 + #endif // use_spring
210 +
211   #ifdef USE_SPRNG
212      vx = vbar * gaussStream->getGaussian();
213      vy = vbar * gaussStream->getGaussian();
214      vz = vbar * gaussStream->getGaussian();
215 < #endif
215 > #endif // use_spring
216  
217      atoms[vr]->set_vx( vx );
218      atoms[vr]->set_vy( vy );
# Line 249 | Line 261 | void Thermo::velocitize() {
261        if( atoms[i]->isDirectional() ){
262          
263          dAtom = (DirectionalAtom *)atoms[i];
264 +
265 + #ifndef USE_SPRNG
266 +
267   #ifdef IS_MPI
268   #error "SPRNG random number generator must be used for MPI"
269 < #else
270 < #warning "Using drand48 for random number generation"
271 < #endif  
269 > #else  // is_mpi
270 >        //warning "Using drand48 for random number generation"
271 > #endif   // is_MPI
272          
273          vbar = sqrt( 2.0 * kebar * dAtom->getIxx() );
274          x = drand48();
# Line 269 | Line 284 | void Thermo::velocitize() {
284          x = drand48();
285          y = drand48();
286          jz = vbar * sqrt( -2.0 * log(x)) * cos(2 * M_PI * y);
287 < #endif
288 < #ifdef USE_SPRNG
287 >
288 > #else //use_sprng
289 >
290          vbar = sqrt( 2.0 * kebar * dAtom->getIxx() );
291          jx = vbar * gaussStream->getGaussian();
292  
# Line 279 | Line 295 | void Thermo::velocitize() {
295  
296          vbar = sqrt( 2.0 * kebar * dAtom->getIzz() );
297          jz = vbar * gaussStream->getGaussian();
298 < #endif
298 > #endif //use_sprng
299          
300          dAtom->setJx( jx );
301          dAtom->setJy( jy );

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines