# | Line 1 | Line 1 | |
---|---|---|
1 | + | #include <iostream> |
2 | + | |
3 | + | using namespace std; |
4 | + | |
5 | + | |
6 | #include <cstdlib> | |
7 | ||
8 | #ifdef IS_MPI | |
# | Line 22 | Line 27 | void ForceFields::calcRcut( void ){ | |
27 | //calc rCut and rList | |
28 | ||
29 | entry_plug->rCut = 2.5 * bigSigma; | |
30 | < | if(entry_plug->rCut > (entry_plug->box_x / 2.0)) |
31 | < | entry_plug->rCut = entry_plug->box_x / 2.0; |
32 | < | if(entry_plug->rCut > (entry_plug->box_y / 2.0)) |
33 | < | entry_plug->rCut = entry_plug->box_y / 2.0; |
34 | < | if(entry_plug->rCut > (entry_plug->box_z / 2.0)) |
35 | < | entry_plug->rCut = entry_plug->box_z / 2.0; |
30 | > | if(entry_plug->rCut > (entry_plug->boxLx / 2.0)) |
31 | > | entry_plug->rCut = entry_plug->boxLx / 2.0; |
32 | > | if(entry_plug->rCut > (entry_plug->boxLy / 2.0)) |
33 | > | entry_plug->rCut = entry_plug->boxLy / 2.0; |
34 | > | if(entry_plug->rCut > (entry_plug->boxLz / 2.0)) |
35 | > | entry_plug->rCut = entry_plug->boxLz / 2.0; |
36 | ||
37 | entry_plug->rList = entry_plug->rCut + 1.0; | |
38 | ||
# | Line 39 | Line 44 | void ForceFields::doForces( int calcPot, int calcStres | |
44 | double* frc; | |
45 | double* pos; | |
46 | double* trq; | |
42 | – | double* tau; |
47 | double* A; | |
48 | double* u_l;; | |
49 | DirectionalAtom* dAtom; | |
50 | ||
47 | – | double ut[3]; |
48 | – | |
49 | – | //u_l = new double[entry_plug->n_atoms]; |
50 | – | |
51 | short int passedCalcPot = (short int)calcPot; | |
52 | short int passedCalcStress = (short int)calcStress; | |
53 | ||
54 | < | // forces are zeroed here, before any are acumulated. |
54 | > | // forces are zeroed here, before any are accumulated. |
55 | // NOTE: do not rezero the forces in Fortran. | |
56 | ||
57 | – | |
57 | for(i=0; i<entry_plug->n_atoms; i++){ | |
58 | < | entry_plug->atoms[i]->zeroForces(); |
60 | < | |
61 | < | // if( entry_plug->atoms[i]->isDirectional() ){ |
62 | < | // dAtom = (DirectionalAtom *)entry_plug->atoms[i]; |
63 | < | // dAtom->getU(ut); |
64 | < | |
65 | < | |
66 | < | // if(dAtom->getIndex()== 1){ |
67 | < | // std::cerr << "atom 2's u_l = " << ut[0] << ", " << ut[1] |
68 | < | // << ", " << ut[2] << "\n"; |
69 | < | // } |
70 | < | // } |
71 | < | |
58 | > | entry_plug->atoms[i]->zeroForces(); |
59 | } | |
60 | ||
61 | for(i=0; i<entry_plug->n_mol; i++ ){ | |
# | Line 80 | Line 67 | void ForceFields::doForces( int calcPot, int calcStres | |
67 | trq = Atom::getTrqArray(); | |
68 | A = Atom::getAmatArray(); | |
69 | u_l = Atom::getUlArray(); | |
83 | – | tau = entry_plug->tau; |
70 | ||
85 | – | |
71 | isError = 0; | |
72 | entry_plug->lrPot = 0.0; | |
88 | – | tau[0] = 0.0; |
89 | – | tau[1] = 0.0; |
90 | – | tau[2] = 0.0; |
91 | – | |
73 | ||
74 | + | for (i=0; i<9; i++) { |
75 | + | entry_plug->tau[i] = 0.0; |
76 | + | } |
77 | ||
94 | – | |
78 | fortranForceLoop( pos, | |
79 | A, | |
80 | u_l, | |
81 | frc, | |
82 | trq, | |
83 | < | tau, |
83 | > | entry_plug->tau, |
84 | &(entry_plug->lrPot), | |
85 | &passedCalcPot, | |
86 | &passedCalcStress, | |
87 | &isError ); | |
88 | ||
106 | – | |
107 | – | // delete[] u_l; |
108 | – | |
89 | if( isError ){ | |
90 | sprintf( painCave.errMsg, | |
91 | "Error returned from the fortran force calculation.\n" ); |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |