11 |
|
#include "ReadWrite.hpp" |
12 |
|
#include "simError.h" |
13 |
|
|
14 |
+ |
#ifdef IS_MPI |
15 |
+ |
#include "mpiSimulation.hpp" |
16 |
+ |
#endif // is_mpi |
17 |
|
|
18 |
|
InitializeFromFile :: InitializeFromFile( char *in_name ){ |
19 |
|
#ifdef IS_MPI |
71 |
|
|
72 |
|
char *eof_test; // ptr to see when we reach the end of the file |
73 |
|
char *parseErr; |
74 |
+ |
int procIndex; |
75 |
|
|
76 |
+ |
entry_plug = the_entry_plug; |
77 |
|
|
73 |
– |
entry_plug = the_entry_plug |
78 |
|
|
75 |
– |
|
79 |
|
#ifndef IS_MPI |
80 |
|
eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file); |
81 |
|
if( eof_test == NULL ){ |
161 |
|
// Check to see that the number of atoms in the intial configuration file is the |
162 |
|
// same as declared in simBass. |
163 |
|
|
164 |
< |
if( n_atoms != entry_plug->mpiSim->getTotAtoms() ){ |
164 |
> |
if( n_atoms != mpiSim->getTotAtoms() ){ |
165 |
|
sprintf( painCave.errMsg, |
166 |
|
"Initialize from File error. %s n_atoms, %d, " |
167 |
|
"does not match the BASS file's n_atoms, %d.\n", |
182 |
|
|
183 |
|
// Read Proc 0 share of the xyz file... |
184 |
|
masterIndex = 0; |
185 |
< |
for( i=0; i <= entry_plug->mpiSim->getMyAtomEnd(); i++){ |
185 |
> |
for( i=0; i <= mpiSim->getMyAtomEnd(); i++){ |
186 |
|
|
187 |
|
eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file); |
188 |
|
if(eof_test == NULL){ |
207 |
|
|
208 |
|
sprintf(checkPointMsg, |
209 |
|
"Node 0 has successfully read positions from input file."); |
210 |
< |
mpiCheckPoint(); |
210 |
> |
MPIcheckPoint(); |
211 |
|
|
212 |
< |
for (procIndex = 1; procIndex < entryPlug->mpiSim->getNumberProcessors(); |
212 |
> |
for (procIndex = 1; procIndex < mpiSim->getNumberProcessors(); |
213 |
|
procIndex++){ |
214 |
|
if (worldRank == 0) { |
215 |
|
|
233 |
|
sendError = 0; |
234 |
|
mpiErr = MPI_Send(&sendError,1,MPI_INT,procIndex,MPI_ANY_TAG,MPI_COMM_WORLD); |
235 |
|
|
236 |
< |
for ( i = nodeAtomStart; i <= nodeAtomEnd, i++){ |
236 |
> |
for ( i = nodeAtomsStart; i <= nodeAtomsEnd; i++){ |
237 |
|
eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file); |
238 |
|
if(eof_test == NULL){ |
239 |
|
|
252 |
|
mpiErr = MPI_Send(read_buffer,BUFFERSIZE,MPI_CHAR,procIndex,MPI_ANY_TAG,MPI_COMM_WORLD); |
253 |
|
mpiErr = MPI_Recv(&sendError,1,MPI_INT,procIndex,MPI_ANY_TAG,MPI_COMM_WORLD, |
254 |
|
istatus); |
255 |
< |
if (sendError) mpiCheckpoint(); |
255 |
> |
if (sendError) MPIcheckPoint(); |
256 |
|
|
257 |
|
masterIndex++; |
258 |
|
} |
260 |
|
|
261 |
|
|
262 |
|
else if(worldRank == procIndex){ |
263 |
< |
nodeAtomStart = entry_plug->mpiSim->getMyAtomStart(); |
264 |
< |
nodeAtomEnd = entry_plug->mpiSim->getMyAtomEnd(); |
263 |
> |
nodeAtomsStart = mpiSim->getMyAtomStart(); |
264 |
> |
nodeAtomsEnd = mpiSim->getMyAtomEnd(); |
265 |
|
mpiErr = MPI_Send(&nodeAtomsStart,1,MPI_INT,0,MPI_ANY_TAG,MPI_COMM_WORLD); |
266 |
|
mpiErr = MPI_Send(&nodeAtomsEnd,1,MPI_INT,0,MPI_ANY_TAG,MPI_COMM_WORLD); |
267 |
|
|
268 |
|
mpiErr = MPI_Recv(&sendError,1,MPI_INT,0,MPI_ANY_TAG,MPI_COMM_WORLD, |
269 |
|
istatus); |
270 |
< |
if (sendError) mpiCheckpoint(); |
270 |
> |
if (sendError) MPIcheckPoint(); |
271 |
|
|
272 |
< |
for ( i = 0; i < entry_plug->n_atoms, i++){ |
272 |
> |
for ( i = 0; i < entry_plug->n_atoms; i++){ |
273 |
|
|
274 |
|
mpiErr = MPI_Recv(&read_buffer,BUFFERSIZE,MPI_CHAR,0,MPI_ANY_TAG,MPI_COMM_WORLD, |
275 |
|
istatus); |
276 |
|
|
277 |
< |
if(!strcmp(read_buffer, "ERROR")) mpiCheckPoint(); |
277 |
> |
if(!strcmp(read_buffer, "ERROR")) MPIcheckPoint(); |
278 |
|
|
279 |
|
parseErr = parseDumpLine( read_buffer, i ); |
280 |
|
if( parseErr != NULL ){ |
291 |
|
} |
292 |
|
} |
293 |
|
sprintf(checkPointMsg,"Node %d received initial configuration.",procIndex); |
294 |
< |
mpiCheckPoint(); |
294 |
> |
MPIcheckPoint(); |
295 |
|
} |
296 |
|
|
297 |
|
#endif |
298 |
|
} |
299 |
|
|
300 |
|
|
301 |
< |
char* IntitializeFromFile::parseDumpLine(char* readLine, int atomIndex){ |
301 |
> |
char* InitializeFromFile::parseDumpLine(char* readLine, int atomIndex){ |
302 |
|
|
303 |
|
char *foo; // the pointer to the current string token |
304 |
|
|
314 |
|
int n_atoms; |
315 |
|
|
316 |
|
#ifdef IS_MPI |
317 |
< |
n_atoms = entry_plug->mpiSim->getTotAtoms(); |
317 |
> |
n_atoms = mpiSim->getTotAtoms(); |
318 |
|
#else |
319 |
|
n_atoms = entry_plug->n_atoms; |
320 |
< |
#endi // is_mpi |
320 |
> |
#endif // is_mpi |
321 |
|
|
322 |
|
|
323 |
|
// set the string tokenizer |