ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/SimInfo.cpp
Revision: 458
Committed: Fri Apr 4 19:47:19 2003 UTC (21 years, 3 months ago) by gezelter
File size: 2613 byte(s)
Log Message:
Changes for Extended System

File Contents

# Content
1 #include <cstdlib>
2 #include <cstring>
3
4
5 #include "SimInfo.hpp"
6 #define __C
7 #include "fSimulation.h"
8 #include "simError.h"
9
10 #include "fortranWrappers.hpp"
11
12 SimInfo* currentInfo;
13
14 SimInfo::SimInfo(){
15 excludes = NULL;
16 n_constraints = 0;
17 n_oriented = 0;
18 n_dipoles = 0;
19 ndf = 0;
20 ndfRaw = 0;
21 the_integrator = NULL;
22 setTemp = 0;
23 thermalTime = 0.0;
24 rCut = 0.0;
25
26 usePBC = 0;
27 useLJ = 0;
28 useSticky = 0;
29 useDipole = 0;
30 useReactionField = 0;
31 useGB = 0;
32 useEAM = 0;
33
34 wrapMeSimInfo( this );
35 }
36
37 void SimInfo::setBox(double newBox[3]) {
38 box_x = newBox[0];
39 box_y = newBox[1];
40 box_z = newBox[2];
41 setFortranBoxSize(newBox);
42 }
43
44 void SimInfo::getBox(double theBox[3]) {
45 theBox[0] = box_x;
46 theBox[1] = box_y;
47 theBox[2] = box_z;
48 }
49
50 int SimInfo::getNDF(){
51 int ndf_local, ndf;
52
53 ndf_local = 3 * n_atoms + 3 * n_oriented - n_constraints;
54
55 #ifdef IS_MPI
56 MPI_Allreduce(&ndf_local,&ndf,1,MPI_INT,MPI_SUM, MPI_COMM_WORLD);
57 #else
58 ndf = ndf_local;
59 #endif
60
61 ndf = ndf - 3;
62
63 return ndf;
64 }
65
66 int SimInfo::getNDFraw() {
67 int ndfRaw_local, ndfRaw;
68
69 // Raw degrees of freedom that we have to set
70 ndfRaw_local = 3 * n_atoms + 3 * n_oriented;
71
72 #ifdef IS_MPI
73 MPI_Allreduce(&ndfRaw_local,&ndfRaw,1,MPI_INT,MPI_SUM, MPI_COMM_WORLD);
74 #else
75 ndfRaw = ndfRaw_local;
76 #endif
77
78 return ndfRaw;
79 }
80
81 void SimInfo::refreshSim(){
82
83 simtype fInfo;
84 int isError;
85 int* excl;
86
87 fInfo.box[0] = box_x;
88 fInfo.box[1] = box_y;
89 fInfo.box[2] = box_z;
90
91 fInfo.rlist = rList;
92 fInfo.rcut = rCut;
93 fInfo.rrf = ecr;
94 fInfo.rt = ecr - est;
95 fInfo.dielect = dielectric;
96
97 fInfo.SIM_uses_PBC = usePBC;
98 //fInfo.SIM_uses_LJ = 0;
99 fInfo.SIM_uses_LJ = useLJ;
100 fInfo.SIM_uses_sticky = useSticky;
101 //fInfo.SIM_uses_sticky = 0;
102 fInfo.SIM_uses_dipoles = useDipole;
103 //fInfo.SIM_uses_dipoles = 0;
104 //fInfo.SIM_uses_RF = useReactionField;
105 fInfo.SIM_uses_RF = 0;
106 fInfo.SIM_uses_GB = useGB;
107 fInfo.SIM_uses_EAM = useEAM;
108
109 excl = Exclude::getArray();
110
111 isError = 0;
112
113 // fInfo;
114 // n_atoms;
115 // identArray;
116 // n_exclude;
117 // excludes;
118 // nGlobalExcludes;
119 // globalExcludes;
120 // isError;
121
122 setFsimulation( &fInfo, &n_atoms, identArray, &n_exclude, excl,
123 &nGlobalExcludes, globalExcludes, &isError );
124
125 if( isError ){
126
127 sprintf( painCave.errMsg,
128 "There was an error setting the simulation information in fortran.\n" );
129 painCave.isFatal = 1;
130 simError();
131 }
132
133 #ifdef IS_MPI
134 sprintf( checkPointMsg,
135 "succesfully sent the simulation information to fortran.\n");
136 MPIcheckPoint();
137 #endif // is_mpi
138
139 ndf = this->getNDF();
140 ndfRaw = this->getNDFraw();
141
142 }
143