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

Comparing:
branches/mmeineke/OOPSE/libmdtools/ForceFields.cpp (file contents), Revision 377 by mmeineke, Fri Mar 21 17:42:12 2003 UTC vs.
trunk/OOPSE/libmdtools/ForceFields.cpp (file contents), Revision 892 by chuckv, Mon Dec 22 21:27:04 2003 UTC

# Line 1 | Line 1
1 < #include <cstdlib>
1 > #include <iostream>
2  
3 + using namespace std;
4 +
5 +
6 + #include <stdlib.h>
7 +
8   #ifdef IS_MPI
9   #include <mpi.h>
10   #endif // is_mpi
11  
12  
13 + #ifdef PROFILE
14 + #include "mdProfile.hpp"
15 + #endif
16 +
17   #include "simError.h"
18   #include "ForceFields.hpp"
19   #include "Atom.hpp"
20   #include "fortranWrappers.hpp"
21  
22  
23 + void ForceFields::calcRcut( void ){
24 +
25 + #ifdef IS_MPI
26 +  double tempBig = bigSigma;
27 +  MPI_Allreduce( &tempBig, &bigSigma, 1, MPI_DOUBLE, MPI_MAX,
28 +                 MPI_COMM_WORLD);
29 + #endif  //is_mpi
30 +
31 +  //calc rCut and rList
32 +
33 +  entry_plug->setDefaultRcut( 2.5 * bigSigma );  
34 +    
35 + }
36 +
37   void ForceFields::doForces( int calcPot, int calcStress ){
38  
39    int i, isError;
40    double* frc;
41    double* pos;
42    double* trq;
20  double* tau;
43    double* A;
44 <  double* u_l;
44 >  double* u_l;;
45 >  SimState* config;
46  
47    short int passedCalcPot = (short int)calcPot;
48    short int passedCalcStress = (short int)calcStress;
49  
50 <  // forces are zeroed here, before any are acumulated.
50 >  // forces are zeroed here, before any are accumulated.
51    // NOTE: do not rezero the forces in Fortran.
52  
53    for(i=0; i<entry_plug->n_atoms; i++){
54 <    entry_plug->atoms[i]->zeroForces();
54 >    entry_plug->atoms[i]->zeroForces();    
55    }
56  
57 <  frc = Atom::getFrcArray();
58 <  pos = Atom::getPosArray();
59 <  trq = Atom::getTrqArray();
60 <  A   = Atom::getAmatArray();
61 <  u_l = Atom::getUlArray();
57 > #ifdef PROFILE
58 >  startProfile(pro7);
59 > #endif
60 >  
61 >  for(i=0; i<entry_plug->n_mol; i++ ){
62 >    entry_plug->molecules[i].calcForces();
63 >  }
64  
65 <  tau = entry_plug->tau;
66 <    
65 > #ifdef PROFILE
66 >  endProfile( pro7 );
67 > #endif
68 >
69 >  config = entry_plug->getConfiguration();
70 >  
71 >  frc = config->getFrcArray();
72 >  pos = config->getPosArray();
73 >  trq = config->getTrqArray();
74 >  A   = config->getAmatArray();
75 >  u_l = config->getUlArray();
76 >
77    isError = 0;
78    entry_plug->lrPot = 0.0;
79 +
80 +  for (i=0; i<9; i++) {
81 +    entry_plug->tau[i] = 0.0;
82 +  }
83 +
84 +
85 + #ifdef PROFILE
86 +  startProfile(pro8);
87 + #endif
88 +
89    fortranForceLoop( pos,
90                      A,
91                      u_l,
92                      frc,
93                      trq,
94 <                    tau,
94 >                    entry_plug->tau,
95                      &(entry_plug->lrPot),
96                      &passedCalcPot,
97                      &passedCalcStress,
98                      &isError );
99  
100 + #ifdef PROFILE
101 +  endProfile(pro8);
102 + #endif
103  
104 +
105    if( isError ){
106      sprintf( painCave.errMsg,
107               "Error returned from the fortran force calculation.\n" );
# Line 65 | Line 114 | void ForceFields::doForces( int calcPot, int calcStres
114             "returned from the force calculation.\n" );
115    MPIcheckPoint();
116   #endif // is_mpi
117 +  
118  
119   }
120  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines