| 43 |
|
#define _LARGEFILE_SOURCE64 |
| 44 |
|
#define _FILE_OFFSET_BITS 64 |
| 45 |
|
|
| 46 |
+ |
#ifdef IS_MPI |
| 47 |
+ |
#include <mpi.h> |
| 48 |
+ |
#endif |
| 49 |
+ |
|
| 50 |
|
#include <sys/types.h> |
| 51 |
|
#include <sys/stat.h> |
| 52 |
|
|
| 64 |
|
#include "utils/StringTokenizer.hpp" |
| 65 |
|
#include "brains/Thermo.hpp" |
| 66 |
|
|
| 63 |
– |
#ifdef IS_MPI |
| 64 |
– |
#include <mpi.h> |
| 65 |
– |
#endif |
| 67 |
|
|
| 67 |
– |
|
| 68 |
|
namespace OpenMD { |
| 69 |
|
|
| 70 |
|
DumpReader::DumpReader(SimInfo* info, const std::string& filename) |
| 203 |
|
#ifdef IS_MPI |
| 204 |
|
} |
| 205 |
|
|
| 206 |
< |
MPI::COMM_WORLD.Bcast(&nframes_, 1, MPI::INT, 0); |
| 206 |
> |
MPI_Bcast(&nframes_, 1, MPI_INT, 0, MPI_COMM_WORLD); |
| 207 |
|
|
| 208 |
|
#endif // is_mpi |
| 209 |
|
|
| 289 |
|
} |
| 290 |
|
|
| 291 |
|
int sendBufferSize = sendBuffer.size(); |
| 292 |
< |
MPI::COMM_WORLD.Bcast(&sendBufferSize, 1, MPI::INT, masterNode); |
| 293 |
< |
MPI::COMM_WORLD.Bcast((void *)sendBuffer.c_str(), sendBufferSize, |
| 294 |
< |
MPI::CHAR, masterNode); |
| 292 |
> |
MPI_Bcast(&sendBufferSize, 1, MPI_INT, masterNode, MPI_COMM_WORLD); |
| 293 |
> |
MPI_Bcast((void *)sendBuffer.c_str(), sendBufferSize, |
| 294 |
> |
MPI_CHAR, masterNode, MPI_COMM_WORLD); |
| 295 |
|
|
| 296 |
|
sstream.str(sendBuffer); |
| 297 |
|
} else { |
| 298 |
|
int sendBufferSize; |
| 299 |
< |
MPI::COMM_WORLD.Bcast(&sendBufferSize, 1, MPI::INT, masterNode); |
| 299 |
> |
MPI_Bcast(&sendBufferSize, 1, MPI_INT, masterNode, MPI_COMM_WORLD); |
| 300 |
|
char * recvBuffer = new char[sendBufferSize+1]; |
| 301 |
|
assert(recvBuffer); |
| 302 |
|
recvBuffer[sendBufferSize] = '\0'; |
| 303 |
< |
MPI::COMM_WORLD.Bcast(recvBuffer, sendBufferSize, MPI::CHAR, masterNode); |
| 303 |
> |
MPI_Bcast(recvBuffer, sendBufferSize, MPI_CHAR, masterNode, MPI_COMM_WORLD); |
| 304 |
|
sstream.str(recvBuffer); |
| 305 |
|
delete [] recvBuffer; |
| 306 |
|
} |
| 508 |
|
eField[1] = tokenizer.nextTokenAsDouble(); |
| 509 |
|
eField[2] = tokenizer.nextTokenAsDouble(); |
| 510 |
|
sd->setElectricField(eField); |
| 511 |
+ |
break; |
| 512 |
+ |
} |
| 513 |
+ |
case 's' : { |
| 514 |
+ |
|
| 515 |
+ |
RealType sPot; |
| 516 |
+ |
sPot = tokenizer.nextTokenAsDouble(); |
| 517 |
+ |
sd->setSitePotential(sPot); |
| 518 |
|
break; |
| 519 |
|
} |
| 520 |
|
default: { |
| 527 |
|
|
| 528 |
|
} |
| 529 |
|
} |
| 523 |
– |
|
| 530 |
|
} |
| 531 |
|
|
| 532 |
|
|
| 566 |
|
if (i >> siteIndex) { |
| 567 |
|
// chew up this token and parse as an int: |
| 568 |
|
siteIndex = tokenizer.nextTokenAsInt(); |
| 569 |
< |
RigidBody* rb = static_cast<RigidBody*>(sd); |
| 570 |
< |
sd = rb->getAtoms()[siteIndex]; |
| 569 |
> |
|
| 570 |
> |
if (sd->isRigidBody()) { |
| 571 |
> |
RigidBody* rb = static_cast<RigidBody*>(sd); |
| 572 |
> |
sd = rb->getAtoms()[siteIndex]; |
| 573 |
> |
} |
| 574 |
|
} |
| 575 |
|
|
| 576 |
|
/** |
| 619 |
|
sd->setElectricField(eField); |
| 620 |
|
break; |
| 621 |
|
} |
| 622 |
+ |
case 's' : { |
| 623 |
+ |
|
| 624 |
+ |
RealType sPot; |
| 625 |
+ |
sPot = tokenizer.nextTokenAsDouble(); |
| 626 |
+ |
sd->setSitePotential(sPot); |
| 627 |
+ |
break; |
| 628 |
+ |
} |
| 629 |
|
default: { |
| 630 |
|
sprintf(painCave.errMsg, |
| 631 |
|
"DumpReader Error: %s is an unrecognized type\n", type.c_str()); |
| 638 |
|
} |
| 639 |
|
|
| 640 |
|
|
| 641 |
< |
void DumpReader::readStuntDoubles(std::istream& inputStream) { |
| 641 |
> |
void DumpReader::readStuntDoubles(std::istream& inputStream) { |
| 642 |
|
|
| 643 |
|
inputStream.getline(buffer, bufferSize); |
| 644 |
|
std::string line(buffer); |