25 #define FILE_OUTPUT -1 27 #define EVAL_MEASURE -3 28 #define FORCE_OUTPUT -4 30 #define OUTPUT_SINGLE_FILE 1 31 #define OUTPUT_MAGIC_NUMBER 123456 32 #define OUTPUT_FILE_VERSION 1.00 50 void output_restart_coordinates(
Vector *,
int,
int);
53 void output_restart_velocities(
int,
int,
Vector *);
56 void output_final_coordinates(
Vector *,
int,
int);
57 void output_final_velocities(
int,
int,
Vector *);
58 void output_forces(
int,
int,
Vector *);
62 void write_binary_file(
char *,
int,
Vector *);
65 struct replicaDcdFile {
68 replicaDcdFile() : fileid(0) { ; }
70 std::map<int,replicaDcdFile> replicaDcdFiles;
71 std::map<std::pair<int,uint16_t>,replicaDcdFile> replicaDcdSelectFiles;
181 #ifdef MEM_OPT_VERSION 184 void output_veldcdfile_master(
int timestep,
int n);
185 void output_veldcdfile_slave(
int timestep,
int fID,
int tID,
Vector *vecs);
186 void output_restart_velocities_master(
int timestep,
int n);
187 void output_restart_velocities_slave(
int timestep,
int fID,
int tID,
Vector *vecs,
int64 offset);
188 void output_final_velocities_master(
int n);
189 void output_final_velocities_slave(
int fID,
int tID,
Vector *vecs,
int64 offset);
191 void output_forcedcdfile_master(
int timestep,
int n);
192 void output_forcedcdfile_slave(
int timestep,
int fID,
int tID,
Vector *vecs);
193 void output_forces_master(
int n);
194 void output_forces_slave(
int fID,
int tID,
Vector *vecs,
int64 offset);
195 void output_dcdfile_master(
int timestep,
int n,
const Lattice *lat,
int tag);
196 void output_dcdfile_slave(
int timestep,
int fID,
int tID,
FloatVector *fvecs,
int tag);
197 void output_restart_coordinates_master(
int timestep,
int n);
198 void output_restart_coordinates_slave(
int timestep,
int fID,
int tID,
Vector *vecs,
int64 offset);
199 void output_final_coordinates_master(
int n);
200 void output_final_coordinates_slave(
int fID,
int tID,
Vector *vecs,
int64 offset);
202 void write_binary_file_master(
char *fname,
int n);
203 void write_binary_file_slave(
char *fname,
int fID,
int tID,
Vector *vecs,
int64 offset);
205 #if !OUTPUT_SINGLE_FILE 211 float *dcdX, *dcdY, *dcdZ;
215 float *veldcdX, *veldcdY, *veldcdZ;
218 float *forcedcdX, *forcedcdY, *forcedcdZ;
223 off_t dcdSelectionOffsets[16];
224 size_t dcdSelectionLocalSize[16];
225 std::vector<uint32> dcdSelectionMap[16];
227 ParOutput(
int oid=-1){
228 dcdFileID=veldcdFileID=-99999;
229 forcedcdFileID=-99999;
230 dcdFirst=veldcdFirst=
TRUE;
232 dcdX=dcdY=dcdZ=veldcdX=veldcdY=veldcdZ=NULL;
233 forcedcdX=forcedcdY=forcedcdZ=NULL;
236 for(
int i=0;i<16;i++)
242 void velocityMaster(
int timestep,
int n);
243 void velocitySlave(
int timestep,
int fID,
int tID,
Vector *vecs);
245 void forceMaster(
int timestep,
int n);
246 void forceSlave(
int timestep,
int fID,
int tID,
Vector *vecs);
248 void coordinateMaster(
int timestep,
int n,
Lattice &lat);
249 void coordinateSlave(
int timestep,
int fID,
int tID,
Vector *vecs,
FloatVector *fvecs);
250 void setDcdSelectionParams(
int index, off_t offset,
size_t size, std::vector<uint32> map );
void setReplicaDcdIndex(int index)
void force(int timestep, int n, Vector *frc, FloatVector *ffrc)
Produce appropriate force for the current timestep.
void replicaDcdSelectInit(int index, const char *tag, const char *filename)
void recvReplicaDcdInit(ReplicaDcdInitMsg *msg)
static std::pair< int, int > coordinateNeeded(int timestep)
Check if the step requires to output the coordinates.
void replicaDcdInit(int index, const char *filename)
void velocity(int timestep, int n, Vector *vel, FloatVector *fvel)
Produce appropriate velocity for the current timestep.
void coordinate(int timestep, int n, Vector *coor, FloatVector *fcoor, Lattice &lattice)
Produce appropriate coordinate output for the current timestep.
void recvReplicaDcdData(ReplicaDcdDataMsg *msg)
static int forceNeeded(int timestep)
Check if the step requires to output the forces.
void energy(int, BigReal *)
static int velocityNeeded(int timestep)
Check if the step requires to output the velocities.