# | Line 51 | Line 51 | namespace oopse { | |
---|---|---|
51 | namespace oopse { | |
52 | RestWriter::RestWriter(SimInfo* info) : | |
53 | info_(info) { | |
54 | < | |
55 | < | //we use master - slave mode, only master node writes to disk |
54 | > | |
55 | > | // only the master node writes to the disk |
56 | > | #ifdef IS_MPI |
57 | > | if (worldRank == 0) { |
58 | > | #endif // is_mpi |
59 | > | |
60 | outName = info_->getRestFileName(); | |
61 | + | |
62 | + | #ifdef IS_MPI |
63 | } | |
64 | + | #endif // is_mpi |
65 | + | } |
66 | ||
67 | RestWriter::~RestWriter() {} | |
68 | ||
# | Line 69 | Line 77 | namespace oopse { | |
77 | StuntDouble* integrableObject; | |
78 | SimInfo::MoleculeIterator mi; | |
79 | Molecule::IntegrableObjectIterator ii; | |
80 | < | |
80 | > | |
81 | #ifdef IS_MPI | |
82 | if(worldRank == 0 ){ | |
83 | #endif | |
# | Line 125 | Line 133 | namespace oopse { | |
133 | int intObIndex; | |
134 | RealType zAngle; | |
135 | ||
136 | < | if (masterNode == 0) { |
136 | > | if (worldRank == masterNode) { |
137 | std::map<int, RealType> zAngData; | |
138 | for(int i = 0 ; i < nproc; ++i) { | |
139 | if (i == masterNode) { | |
# | Line 136 | Line 144 | namespace oopse { | |
144 | integrableObject != NULL; | |
145 | integrableObject = mol->nextIntegrableObject(ii)) { | |
146 | ||
147 | < | intObIndex = integrableObject->getGlobalIndex() ; |
147 | > | intObIndex = integrableObject->getGlobalIndex(); |
148 | > | |
149 | zAngle = integrableObject->getZangle(); | |
150 | zAngData.insert(std::pair<int, RealType>(intObIndex, zAngle)); | |
151 | } | |
152 | } | |
144 | – | |
153 | } else { | |
154 | < | for(int k = 0; k < nIntObjectsInProc[i]; ++k) { |
155 | < | MPI_Recv(&intObIndex, 1, MPI_INT, i, 0, MPI_COMM_WORLD,&ierr); |
156 | < | MPI_Recv(&zAngle, 1, MPI_REALTYPE, i, 0, MPI_COMM_WORLD,&ierr); |
157 | < | zAngData.insert(std::pair<int, RealType>(intObIndex, zAngle)); |
158 | < | } |
154 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
155 | > | mol = info_->nextMolecule(mi)) { |
156 | > | |
157 | > | for (integrableObject = mol->beginIntegrableObject(ii); |
158 | > | integrableObject != NULL; |
159 | > | integrableObject = mol->nextIntegrableObject(ii)) { |
160 | > | |
161 | > | MPI_Recv(&intObIndex, 1, MPI_INT, i, 0, MPI_COMM_WORLD,&ierr); |
162 | > | MPI_Recv(&zAngle, 1, MPI_REALTYPE, i, 0, MPI_COMM_WORLD,&ierr); |
163 | > | zAngData.insert(std::pair<int, RealType>(intObIndex, zAngle)); |
164 | > | } |
165 | > | } |
166 | } | |
152 | – | |
167 | } | |
168 | ||
169 | finalOut | |
# | Line 158 | Line 172 | namespace oopse { | |
172 | ||
173 | std::map<int, RealType>::iterator l; | |
174 | for (l = zAngData.begin(); l != zAngData.end(); ++l) { | |
175 | < | finalOut << l->second << "\n"; |
175 | > | sprintf( tempBuffer, |
176 | > | "%14.10lf\n", |
177 | > | l->second); |
178 | > | strcpy( writeLine, tempBuffer ); |
179 | > | |
180 | > | finalOut << writeLine; |
181 | } | |
182 | + | |
183 | + | finalOut.close(); |
184 | ||
185 | } else { | |
186 | < | |
187 | < | for (mol = info_->beginMolecule(mi); mol != NULL; |
188 | < | mol = info_->nextMolecule(mi)) { |
189 | < | |
190 | < | for (integrableObject = mol->beginIntegrableObject(ii); |
191 | < | integrableObject != NULL; |
192 | < | integrableObject = mol->nextIntegrableObject(ii)) { |
193 | < | intObIndex = integrableObject->getGlobalIndex(); |
194 | < | zAngle = integrableObject->getZangle(); |
195 | < | MPI_Send(&intObIndex, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD); |
196 | < | MPI_Send(&zAngle, 1, MPI_REALTYPE, masterNode, 0, MPI_COMM_WORLD); |
197 | < | } |
186 | > | for(int j = 1; j < nproc; ++j) { |
187 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
188 | > | mol = info_->nextMolecule(mi)) { |
189 | > | |
190 | > | for (integrableObject = mol->beginIntegrableObject(ii); |
191 | > | integrableObject != NULL; |
192 | > | integrableObject = mol->nextIntegrableObject(ii)) { |
193 | > | intObIndex = integrableObject->getGlobalIndex(); |
194 | > | zAngle = integrableObject->getZangle(); |
195 | > | |
196 | > | MPI_Send(&intObIndex, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD); |
197 | > | MPI_Send(&zAngle, 1, MPI_REALTYPE, masterNode, 0, MPI_COMM_WORLD); |
198 | > | } |
199 | > | } |
200 | } | |
201 | } | |
202 | + | |
203 | #endif | |
180 | – | |
181 | – | #ifdef IS_MPI |
182 | – | finalOut.close(); |
183 | – | #endif |
184 | – | |
204 | } | |
205 | ||
206 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |