multiple consistency improvements for restart files
- make defines and enumerators automatically consistent by moving them to a shared header file - change VERSION_NUMERIC to FORMAT_REVISION (and corresponding function names) - new class member revision in ReadRestart class to allow backward compatibility - step current FORMAT_REVISION to 1 - write the magic string a the end of each restart - add a check, that skips to the end of a file and checks for the magic string and then returns but do this only if FORMAT_REVISION is 1 or larger for backward compatibility
This commit is contained in:
@ -36,34 +36,10 @@
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
|
||||
#include "lmp_restart.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
// same as read_restart.cpp
|
||||
|
||||
#define MAGIC_STRING "LammpS RestartT"
|
||||
#define ENDIAN 0x0001
|
||||
#define ENDIANSWAP 0x1000
|
||||
#define VERSION_NUMERIC 0
|
||||
|
||||
enum{VERSION,SMALLINT,TAGINT,BIGINT,
|
||||
UNITS,NTIMESTEP,DIMENSION,NPROCS,PROCGRID,
|
||||
NEWTON_PAIR,NEWTON_BOND,
|
||||
XPERIODIC,YPERIODIC,ZPERIODIC,BOUNDARY,
|
||||
ATOM_STYLE,NATOMS,NTYPES,
|
||||
NBONDS,NBONDTYPES,BOND_PER_ATOM,
|
||||
NANGLES,NANGLETYPES,ANGLE_PER_ATOM,
|
||||
NDIHEDRALS,NDIHEDRALTYPES,DIHEDRAL_PER_ATOM,
|
||||
NIMPROPERS,NIMPROPERTYPES,IMPROPER_PER_ATOM,
|
||||
TRICLINIC,BOXLO,BOXHI,XY,XZ,YZ,
|
||||
SPECIAL_LJ,SPECIAL_COUL,
|
||||
MASS,PAIR,BOND,ANGLE,DIHEDRAL,IMPROPER,
|
||||
MULTIPROC,MPIIO,PROCSPERFILE,PERPROC,
|
||||
IMAGEINT,BOUNDMIN,TIMESTEP,
|
||||
ATOM_ID,ATOM_MAP_STYLE,ATOM_MAP_USER,ATOM_SORTFREQ,ATOM_SORTBIN,
|
||||
COMM_MODE,COMM_CUTOFF,COMM_VEL,NO_PAIR,
|
||||
EXTRA_BOND_PER_ATOM,EXTRA_ANGLE_PER_ATOM,EXTRA_DIHEDRAL_PER_ATOM,
|
||||
EXTRA_IMPROPER_PER_ATOM,EXTRA_SPECIAL_PER_ATOM,ATOM_MAXSPECIAL};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
WriteRestart::WriteRestart(LAMMPS *lmp) : Pointers(lmp)
|
||||
@ -319,6 +295,7 @@ void WriteRestart::write(char *file)
|
||||
|
||||
if (multiproc) {
|
||||
if (me == 0 && fp) {
|
||||
magic_string();
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
}
|
||||
@ -401,6 +378,7 @@ void WriteRestart::write(char *file)
|
||||
|
||||
if (mpiioflag) {
|
||||
if (me == 0 && fp) {
|
||||
magic_string();
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
}
|
||||
@ -430,6 +408,7 @@ void WriteRestart::write(char *file)
|
||||
|
||||
write_double_vec(PERPROC,recv_size,buf);
|
||||
}
|
||||
magic_string();
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
|
||||
@ -656,7 +635,7 @@ void WriteRestart::endian()
|
||||
|
||||
void WriteRestart::version_numeric()
|
||||
{
|
||||
int vn = VERSION_NUMERIC;
|
||||
int vn = FORMAT_REVISION;
|
||||
fwrite(&vn,sizeof(int),1,fp);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user