# | Line 27 | Line 27 | DumpWriter::DumpWriter( SimInfo* the_entry_plug ){ | |
---|---|---|
27 | if(worldRank == 0 ){ | |
28 | #endif // is_mpi | |
29 | ||
30 | – | |
31 | – | |
30 | strcpy( outName, entry_plug->sampleName ); | |
31 | ||
32 | outFile.open(outName, ios::out | ios::trunc ); | |
# | Line 41 | Line 39 | DumpWriter::DumpWriter( SimInfo* the_entry_plug ){ | |
39 | painCave.isFatal = 1; | |
40 | simError(); | |
41 | } | |
42 | < | |
42 | > | |
43 | //outFile.setf( ios::scientific ); | |
44 | ||
45 | #ifdef IS_MPI | |
# | Line 72 | Line 70 | void DumpWriter::writeDump( double currentTime ){ | |
70 | char tempBuffer[BUFFERSIZE]; | |
71 | char writeLine[BUFFERSIZE]; | |
72 | ||
73 | < | int i, j, which_node, done, game_over, which_atom, local_index; |
73 | > | int i, j, which_node, done, which_atom, local_index; |
74 | double q[4]; | |
75 | DirectionalAtom* dAtom; | |
76 | int nAtoms = entry_plug->n_atoms; | |
77 | Atom** atoms = entry_plug->atoms; | |
78 | + | |
79 | + | double pos[3], vel[3]; |
80 | ||
81 | ||
82 | #ifndef IS_MPI | |
83 | ||
84 | outFile << nAtoms << "\n"; | |
85 | ||
86 | < | outFile << currentTime << "\t" |
87 | < | << entry_plug->box_x << "\t" |
88 | < | << entry_plug->box_y << "\t" |
89 | < | << entry_plug->box_z << "\n"; |
86 | > | outFile << currentTime << ";\t" |
87 | > | << entry_plug->Hmat[0][0] << "\t" |
88 | > | << entry_plug->Hmat[1][0] << "\t" |
89 | > | << entry_plug->Hmat[2][0] << ";\t" |
90 | > | |
91 | > | << entry_plug->Hmat[0][1] << "\t" |
92 | > | << entry_plug->Hmat[1][1] << "\t" |
93 | > | << entry_plug->Hmat[2][1] << ";\t" |
94 | > | |
95 | > | << entry_plug->Hmat[0][2] << "\t" |
96 | > | << entry_plug->Hmat[1][2] << "\t" |
97 | > | << entry_plug->Hmat[2][2] << ";\n"; |
98 | ||
99 | for( i=0; i<nAtoms; i++ ){ | |
100 | ||
101 | + | atoms[i]->getPos(pos); |
102 | + | atoms[i]->getVel(vel); |
103 | ||
104 | sprintf( tempBuffer, | |
105 | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | |
106 | atoms[i]->getType(), | |
107 | < | atoms[i]->getX(), |
108 | < | atoms[i]->getY(), |
109 | < | atoms[i]->getZ(), |
110 | < | atoms[i]->get_vx(), |
111 | < | atoms[i]->get_vy(), |
112 | < | atoms[i]->get_vz()); |
107 | > | pos[0], |
108 | > | pos[1], |
109 | > | pos[2], |
110 | > | vel[0], |
111 | > | vel[1], |
112 | > | vel[2]); |
113 | strcpy( writeLine, tempBuffer ); | |
114 | ||
115 | if( atoms[i]->isDirectional() ){ | |
# | Line 140 | Line 150 | void DumpWriter::writeDump( double currentTime ){ | |
150 | ||
151 | if( worldRank == 0 ){ | |
152 | outFile << mpiSim->getTotAtoms() << "\n"; | |
153 | + | |
154 | + | outFile << currentTime << ";\t" |
155 | + | << entry_plug->Hmat[0][0] << "\t" |
156 | + | << entry_plug->Hmat[1][0] << "\t" |
157 | + | << entry_plug->Hmat[2][0] << ";\t" |
158 | + | |
159 | + | << entry_plug->Hmat[0][1] << "\t" |
160 | + | << entry_plug->Hmat[1][1] << "\t" |
161 | + | << entry_plug->Hmat[2][1] << ";\t" |
162 | + | |
163 | + | << entry_plug->Hmat[0][2] << "\t" |
164 | + | << entry_plug->Hmat[1][2] << "\t" |
165 | + | << entry_plug->Hmat[2][2] << ";\n"; |
166 | ||
144 | – | outFile << currentTime << "\t" |
145 | – | << entry_plug->box_x << "\t" |
146 | – | << entry_plug->box_y << "\t" |
147 | – | << entry_plug->box_z << "\n"; |
167 | outFile.flush(); | |
168 | for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { | |
169 | // Get the Node number which has this atom; | |
# | Line 161 | Line 180 | void DumpWriter::writeDump( double currentTime ){ | |
180 | } | |
181 | if (local_index != -1) { | |
182 | //format the line | |
183 | + | |
184 | + | atoms[local_index]->getPos(pos); |
185 | + | atoms[local_index]->getVel(vel); |
186 | + | |
187 | sprintf( tempBuffer, | |
188 | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | |
189 | atoms[local_index]->getType(), | |
190 | < | atoms[local_index]->getX(), |
191 | < | atoms[local_index]->getY(), |
192 | < | atoms[local_index]->getZ(), |
193 | < | atoms[local_index]->get_vx(), |
194 | < | atoms[local_index]->get_vy(), |
195 | < | atoms[local_index]->get_vz()); // check here. |
190 | > | pos[0], |
191 | > | pos[1], |
192 | > | pos[2], |
193 | > | vel[0], |
194 | > | vel[1], |
195 | > | vel[2]); // check here. |
196 | strcpy( writeLine, tempBuffer ); | |
197 | ||
198 | if( atoms[local_index]->isDirectional() ){ | |
# | Line 251 | Line 274 | void DumpWriter::writeDump( double currentTime ){ | |
274 | } | |
275 | if (local_index != -1) { | |
276 | //format the line | |
277 | + | |
278 | + | atoms[local_index]->getPos(pos); |
279 | + | atoms[local_index]->getVel(vel); |
280 | + | |
281 | sprintf( tempBuffer, | |
282 | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | |
283 | atoms[local_index]->getType(), | |
284 | < | atoms[local_index]->getX(), |
285 | < | atoms[local_index]->getY(), |
286 | < | atoms[local_index]->getZ(), |
287 | < | atoms[local_index]->get_vx(), |
288 | < | atoms[local_index]->get_vy(), |
289 | < | atoms[local_index]->get_vz()); // check here. |
284 | > | pos[0], |
285 | > | pos[1], |
286 | > | pos[2], |
287 | > | vel[0], |
288 | > | vel[1], |
289 | > | vel[2]); // check here. |
290 | strcpy( writeLine, tempBuffer ); | |
291 | ||
292 | if( atoms[local_index]->isDirectional() ){ | |
# | Line 309 | Line 336 | void DumpWriter::writeDump( double currentTime ){ | |
336 | #endif // is_mpi | |
337 | } | |
338 | ||
339 | < | void DumpWriter::writeFinal(){ |
339 | > | void DumpWriter::writeFinal(double finalTime){ |
340 | ||
341 | char finalName[500]; | |
342 | ofstream finalOut; | |
# | Line 324 | Line 351 | void DumpWriter::writeFinal(){ | |
351 | Atom** atoms = entry_plug->atoms; | |
352 | int i, j, which_node, done, game_over, which_atom, local_index; | |
353 | ||
354 | + | double pos[3], vel[3]; |
355 | ||
356 | #ifdef IS_MPI | |
357 | if(worldRank == 0 ){ | |
# | Line 355 | Line 383 | void DumpWriter::writeFinal(){ | |
383 | ||
384 | finalOut << nAtoms << "\n"; | |
385 | ||
386 | < | finalOut << entry_plug->box_x << "\t" |
387 | < | << entry_plug->box_y << "\t" |
388 | < | << entry_plug->box_z << "\n"; |
386 | > | finalOut << finalTime << ";\t" |
387 | > | << entry_plug->Hmat[0][0] << "\t" |
388 | > | << entry_plug->Hmat[1][0] << "\t" |
389 | > | << entry_plug->Hmat[2][0] << ";\t" |
390 | > | |
391 | > | << entry_plug->Hmat[0][1] << "\t" |
392 | > | << entry_plug->Hmat[1][1] << "\t" |
393 | > | << entry_plug->Hmat[2][1] << ";\t" |
394 | > | |
395 | > | << entry_plug->Hmat[0][2] << "\t" |
396 | > | << entry_plug->Hmat[1][2] << "\t" |
397 | > | << entry_plug->Hmat[2][2] << ";\n"; |
398 | ||
399 | for( i=0; i<nAtoms; i++ ){ | |
400 | ||
401 | + | atoms[i]->getPos(pos); |
402 | + | atoms[i]->getVel(vel); |
403 | + | |
404 | sprintf( tempBuffer, | |
405 | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | |
406 | atoms[i]->getType(), | |
407 | < | atoms[i]->getX(), |
408 | < | atoms[i]->getY(), |
409 | < | atoms[i]->getZ(), |
410 | < | atoms[i]->get_vx(), |
411 | < | atoms[i]->get_vy(), |
412 | < | atoms[i]->get_vz()); |
407 | > | pos[0], |
408 | > | pos[1], |
409 | > | pos[2], |
410 | > | vel[0], |
411 | > | vel[1], |
412 | > | vel[2]); |
413 | strcpy( writeLine, tempBuffer ); | |
414 | ||
415 | if( atoms[i]->isDirectional() ){ | |
# | Line 413 | Line 453 | void DumpWriter::writeFinal(){ | |
453 | if( worldRank == 0 ){ | |
454 | finalOut << mpiSim->getTotAtoms() << "\n"; | |
455 | ||
456 | < | finalOut << entry_plug->box_x << "\t" |
457 | < | << entry_plug->box_y << "\t" |
458 | < | << entry_plug->box_z << "\n"; |
456 | > | finalOut << finalTime << ";\t" |
457 | > | << entry_plug->Hmat[0][0] << "\t" |
458 | > | << entry_plug->Hmat[1][0] << "\t" |
459 | > | << entry_plug->Hmat[2][0] << ";\t" |
460 | > | |
461 | > | << entry_plug->Hmat[0][1] << "\t" |
462 | > | << entry_plug->Hmat[1][1] << "\t" |
463 | > | << entry_plug->Hmat[2][1] << ";\t" |
464 | > | |
465 | > | << entry_plug->Hmat[0][2] << "\t" |
466 | > | << entry_plug->Hmat[1][2] << "\t" |
467 | > | << entry_plug->Hmat[2][2] << ";\n"; |
468 | ||
469 | for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { | |
470 | // Get the Node number which has this molecule: | |
# | Line 429 | Line 478 | void DumpWriter::writeFinal(){ | |
478 | for (j=0; (j<mpiSim->getMyNlocal()) && (local_index < 0); j++) { | |
479 | if (atoms[j]->getGlobalIndex() == which_atom) local_index = j; | |
480 | } | |
481 | < | if (local_index != -1) { |
481 | > | if (local_index != -1) { |
482 | > | |
483 | > | atoms[local_index]->getPos(pos); |
484 | > | atoms[local_index]->getVel(vel); |
485 | > | |
486 | sprintf( tempBuffer, | |
487 | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | |
488 | atoms[local_index]->getType(), | |
489 | < | atoms[local_index]->getX(), |
490 | < | atoms[local_index]->getY(), |
491 | < | atoms[local_index]->getZ(), |
492 | < | atoms[local_index]->get_vx(), |
493 | < | atoms[local_index]->get_vy(), |
494 | < | atoms[local_index]->get_vz()); |
489 | > | pos[0], |
490 | > | pos[1], |
491 | > | pos[2], |
492 | > | vel[0], |
493 | > | vel[1], |
494 | > | vel[2]); |
495 | strcpy( writeLine, tempBuffer ); | |
496 | ||
497 | if( atoms[local_index]->isDirectional() ){ | |
# | Line 518 | Line 571 | void DumpWriter::writeFinal(){ | |
571 | } | |
572 | if (local_index != -1) { | |
573 | ||
574 | + | atoms[local_index]->getPos(pos); |
575 | + | atoms[local_index]->getVel(vel); |
576 | + | |
577 | //format the line | |
578 | sprintf( tempBuffer, | |
579 | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | |
580 | atoms[local_index]->getType(), | |
581 | < | atoms[local_index]->getX(), |
582 | < | atoms[local_index]->getY(), |
583 | < | atoms[local_index]->getZ(), |
584 | < | atoms[local_index]->get_vx(), |
585 | < | atoms[local_index]->get_vy(), |
586 | < | atoms[local_index]->get_vz()); // check here. |
581 | > | pos[0], |
582 | > | pos[1], |
583 | > | pos[2], |
584 | > | vel[0], |
585 | > | vel[1], |
586 | > | vel[2]); // check here. |
587 | strcpy( writeLine, tempBuffer ); | |
588 | ||
589 | if( atoms[local_index]->isDirectional() ){ |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |