git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@5465 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp
2011-01-04 20:07:43 +00:00
parent b414a4a22a
commit 3333f6a924
5 changed files with 104 additions and 93 deletions

View File

@ -32,8 +32,8 @@ class Atom : protected Pointers {
int tag_enable; // 0/1 if atom ID tags are defined int tag_enable; // 0/1 if atom ID tags are defined
int molecular; // 0 = atomic, 1 = molecular system int molecular; // 0 = atomic, 1 = molecular system
bigint nbonds,nangles,ndihedrals,nimpropers;
int ntypes,nbondtypes,nangletypes,ndihedraltypes,nimpropertypes; int ntypes,nbondtypes,nangletypes,ndihedraltypes,nimpropertypes;
int nbonds,nangles,ndihedrals,nimpropers;
int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom;
int extra_bond_per_atom; int extra_bond_per_atom;

View File

@ -339,30 +339,32 @@ void DeleteBonds::command(int narg, char **arg)
if (remove_flag) { if (remove_flag) {
if (atom->avec->bonds_allow) { if (atom->avec->bonds_allow) {
int nbonds = 0; bigint nbonds = 0;
for (i = 0; i < nlocal; i++) nbonds += atom->num_bond[i]; for (i = 0; i < nlocal; i++) nbonds += atom->num_bond[i];
MPI_Allreduce(&nbonds,&atom->nbonds,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&nbonds,&atom->nbonds,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
if (force->newton_bond == 0) atom->nbonds /= 2; if (force->newton_bond == 0) atom->nbonds /= 2;
} }
if (atom->avec->angles_allow) { if (atom->avec->angles_allow) {
int nangles = 0; bigint nangles = 0;
for (i = 0; i < nlocal; i++) nangles += atom->num_angle[i]; for (i = 0; i < nlocal; i++) nangles += atom->num_angle[i];
MPI_Allreduce(&nangles,&atom->nangles,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&nangles,&atom->nangles,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
if (force->newton_bond == 0) atom->nangles /= 3; if (force->newton_bond == 0) atom->nangles /= 3;
} }
if (atom->avec->dihedrals_allow) { if (atom->avec->dihedrals_allow) {
int ndihedrals = 0; bigint ndihedrals = 0;
for (i = 0; i < nlocal; i++) ndihedrals += atom->num_dihedral[i]; for (i = 0; i < nlocal; i++) ndihedrals += atom->num_dihedral[i];
MPI_Allreduce(&ndihedrals,&atom->ndihedrals,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&ndihedrals,&atom->ndihedrals,
1,MPI_UNSIGNED_LONG,MPI_SUM,world);
if (force->newton_bond == 0) atom->ndihedrals /= 4; if (force->newton_bond == 0) atom->ndihedrals /= 4;
} }
if (atom->avec->impropers_allow) { if (atom->avec->impropers_allow) {
int nimpropers = 0; bigint nimpropers = 0;
for (i = 0; i < nlocal; i++) nimpropers += atom->num_improper[i]; for (i = 0; i < nlocal; i++) nimpropers += atom->num_improper[i];
MPI_Allreduce(&nimpropers,&atom->nimpropers,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&nimpropers,&atom->nimpropers,
1,MPI_UNSIGNED_LONG,MPI_SUM,world);
if (force->newton_bond == 0) atom->nimpropers /= 4; if (force->newton_bond == 0) atom->nimpropers /= 4;
} }
@ -370,11 +372,11 @@ void DeleteBonds::command(int narg, char **arg)
// compute and print stats // compute and print stats
int tmp; bigint tmp;
int bond_on,bond_off; bigint bond_on,bond_off;
int angle_on,angle_off; bigint angle_on,angle_off;
int dihedral_on,dihedral_off; bigint dihedral_on,dihedral_off;
int improper_on,improper_off; bigint improper_on,improper_off;
if (atom->avec->bonds_allow) { if (atom->avec->bonds_allow) {
bond_on = bond_off = 0; bond_on = bond_off = 0;
@ -382,9 +384,9 @@ void DeleteBonds::command(int narg, char **arg)
for (m = 0; m < atom->num_bond[i]; m++) for (m = 0; m < atom->num_bond[i]; m++)
if (atom->bond_type[i][m] > 0) bond_on++; if (atom->bond_type[i][m] > 0) bond_on++;
else bond_off++; else bond_off++;
MPI_Allreduce(&bond_on,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&bond_on,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
bond_on = tmp; bond_on = tmp;
MPI_Allreduce(&bond_off,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&bond_off,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
bond_off = tmp; bond_off = tmp;
if (force->newton_bond == 0) { if (force->newton_bond == 0) {
bond_on /= 2; bond_on /= 2;
@ -398,9 +400,9 @@ void DeleteBonds::command(int narg, char **arg)
for (m = 0; m < atom->num_angle[i]; m++) for (m = 0; m < atom->num_angle[i]; m++)
if (atom->angle_type[i][m] > 0) angle_on++; if (atom->angle_type[i][m] > 0) angle_on++;
else angle_off++; else angle_off++;
MPI_Allreduce(&angle_on,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&angle_on,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
angle_on = tmp; angle_on = tmp;
MPI_Allreduce(&angle_off,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&angle_off,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
angle_off = tmp; angle_off = tmp;
if (force->newton_bond == 0) { if (force->newton_bond == 0) {
angle_on /= 3; angle_on /= 3;
@ -414,9 +416,9 @@ void DeleteBonds::command(int narg, char **arg)
for (m = 0; m < atom->num_dihedral[i]; m++) for (m = 0; m < atom->num_dihedral[i]; m++)
if (atom->dihedral_type[i][m] > 0) dihedral_on++; if (atom->dihedral_type[i][m] > 0) dihedral_on++;
else dihedral_off++; else dihedral_off++;
MPI_Allreduce(&dihedral_on,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&dihedral_on,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
dihedral_on = tmp; dihedral_on = tmp;
MPI_Allreduce(&dihedral_off,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&dihedral_off,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
dihedral_off = tmp; dihedral_off = tmp;
if (force->newton_bond == 0) { if (force->newton_bond == 0) {
dihedral_on /= 4; dihedral_on /= 4;
@ -430,9 +432,9 @@ void DeleteBonds::command(int narg, char **arg)
for (m = 0; m < atom->num_improper[i]; m++) for (m = 0; m < atom->num_improper[i]; m++)
if (atom->improper_type[i][m] > 0) improper_on++; if (atom->improper_type[i][m] > 0) improper_on++;
else improper_off++; else improper_off++;
MPI_Allreduce(&improper_on,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&improper_on,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
improper_on = tmp; improper_on = tmp;
MPI_Allreduce(&improper_off,&tmp,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&improper_off,&tmp,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
improper_off = tmp; improper_off = tmp;
if (force->newton_bond == 0) { if (force->newton_bond == 0) {
improper_on /= 4; improper_on /= 4;
@ -443,30 +445,32 @@ void DeleteBonds::command(int narg, char **arg)
if (comm->me == 0) { if (comm->me == 0) {
if (screen) { if (screen) {
if (atom->avec->bonds_allow) if (atom->avec->bonds_allow)
fprintf(screen," %d total bonds, %d turned on, %d turned off\n", fprintf(screen," %lu total bonds, %lu turned on, %lu turned off\n",
atom->nbonds,bond_on,bond_off); atom->nbonds,bond_on,bond_off);
if (atom->avec->angles_allow) if (atom->avec->angles_allow)
fprintf(screen," %d total angles, %d turned on, %d turned off\n", fprintf(screen," %lu total angles, %lu turned on, %lu turned off\n",
atom->nangles,angle_on,angle_off); atom->nangles,angle_on,angle_off);
if (atom->avec->dihedrals_allow) if (atom->avec->dihedrals_allow)
fprintf(screen," %d total dihedrals, %d turned on, %d turned off\n", fprintf(screen," %lu total dihedrals, %lu turned on, %lu turned off\n",
atom->ndihedrals,dihedral_on,dihedral_off); atom->ndihedrals,dihedral_on,dihedral_off);
if (atom->avec->impropers_allow) if (atom->avec->impropers_allow)
fprintf(screen," %d total impropers, %d turned on, %d turned off\n", fprintf(screen," %lu total impropers, %lu turned on, %lu turned off\n",
atom->nimpropers,improper_on,improper_off); atom->nimpropers,improper_on,improper_off);
} }
if (logfile) { if (logfile) {
if (atom->avec->bonds_allow) if (atom->avec->bonds_allow)
fprintf(logfile," %d total bonds, %d turned on, %d turned off\n", fprintf(logfile," %lu total bonds, %lu turned on, %lu turned off\n",
atom->nbonds,bond_on,bond_off); atom->nbonds,bond_on,bond_off);
if (atom->avec->angles_allow) if (atom->avec->angles_allow)
fprintf(logfile," %d total angles, %d turned on, %d turned off\n", fprintf(logfile," %lu total angles, %lu turned on, %lu turned off\n",
atom->nangles,angle_on,angle_off); atom->nangles,angle_on,angle_off);
if (atom->avec->dihedrals_allow) if (atom->avec->dihedrals_allow)
fprintf(logfile," %d total dihedrals, %d turned on, %d turned off\n", fprintf(logfile," %lu total dihedrals, %lu turned on, "
"%lu turned off\n",
atom->ndihedrals,dihedral_on,dihedral_off); atom->ndihedrals,dihedral_on,dihedral_off);
if (atom->avec->impropers_allow) if (atom->avec->impropers_allow)
fprintf(logfile," %d total impropers, %d turned on, %d turned off\n", fprintf(logfile," %lu total impropers, %lu turned on, "
"%lu turned off\n",
atom->nimpropers,improper_on,improper_off); atom->nimpropers,improper_on,improper_off);
} }
} }

View File

@ -337,10 +337,10 @@ void ReadData::header(int flag)
// search line for header keyword and set corresponding variable // search line for header keyword and set corresponding variable
if (strstr(line,"atoms")) sscanf(line,"%lu",&atom->natoms); if (strstr(line,"atoms")) sscanf(line,"%lu",&atom->natoms);
else if (strstr(line,"bonds")) sscanf(line,"%d",&atom->nbonds); else if (strstr(line,"bonds")) sscanf(line,"%lu",&atom->nbonds);
else if (strstr(line,"angles")) sscanf(line,"%d",&atom->nangles); else if (strstr(line,"angles")) sscanf(line,"%lu",&atom->nangles);
else if (strstr(line,"dihedrals")) sscanf(line,"%d",&atom->ndihedrals); else if (strstr(line,"dihedrals")) sscanf(line,"lu",&atom->ndihedrals);
else if (strstr(line,"impropers")) sscanf(line,"%d",&atom->nimpropers); else if (strstr(line,"impropers")) sscanf(line,"%lu",&atom->nimpropers);
else if (strstr(line,"atom types")) sscanf(line,"%d",&atom->ntypes); else if (strstr(line,"atom types")) sscanf(line,"%d",&atom->ntypes);
else if (strstr(line,"bond types")) sscanf(line,"%d",&atom->nbondtypes); else if (strstr(line,"bond types")) sscanf(line,"%d",&atom->nbondtypes);
@ -434,12 +434,12 @@ void ReadData::atoms()
// check that all atoms were assigned correctly // check that all atoms were assigned correctly
double tmp = atom->nlocal; bigint tmp = atom->nlocal;
MPI_Allreduce(&tmp,&natoms,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&tmp,&natoms,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
if (me == 0) { if (me == 0) {
if (screen) fprintf(screen," %.15g atoms\n",natoms); if (screen) fprintf(screen," %lu atoms\n",natoms);
if (logfile) fprintf(logfile," %.15g atoms\n",natoms); if (logfile) fprintf(logfile," %lu atoms\n",natoms);
} }
if (natoms != atom->natoms) error->all("Did not assign all atoms correctly"); if (natoms != atom->natoms) error->all("Did not assign all atoms correctly");
@ -529,8 +529,8 @@ void ReadData::velocities()
} }
if (me == 0) { if (me == 0) {
if (screen) fprintf(screen," %.15g velocities\n",natoms); if (screen) fprintf(screen," %lu velocities\n",natoms);
if (logfile) fprintf(logfile," %.15g velocities\n",natoms); if (logfile) fprintf(logfile," %lu velocities\n",natoms);
} }
} }
@ -540,9 +540,11 @@ void ReadData::bonds()
{ {
int i,m,nchunk; int i,m,nchunk;
int nread = 0; bigint nread = 0;
while (nread < atom->nbonds) { bigint nbonds = atom->nbonds;
nchunk = MIN(atom->nbonds-nread,CHUNK);
while (nread < nbonds) {
nchunk = MIN(nbonds-nread,CHUNK);
if (me == 0) { if (me == 0) {
char *eof; char *eof;
m = 0; m = 0;
@ -563,17 +565,16 @@ void ReadData::bonds()
// check that bonds were assigned correctly // check that bonds were assigned correctly
int nlocal = atom->nlocal; int nlocal = atom->nlocal;
bigint sum;
int sum; bigint n = 0;
int n = 0;
for (i = 0; i < nlocal; i++) n += atom->num_bond[i]; for (i = 0; i < nlocal; i++) n += atom->num_bond[i];
MPI_Allreduce(&n,&sum,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&n,&sum,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
int factor = 1; int factor = 1;
if (!force->newton_bond) factor = 2; if (!force->newton_bond) factor = 2;
if (me == 0) { if (me == 0) {
if (screen) fprintf(screen," %d bonds\n",sum/factor); if (screen) fprintf(screen," %lu bonds\n",sum/factor);
if (logfile) fprintf(logfile," %d bonds\n",sum/factor); if (logfile) fprintf(logfile," %lu bonds\n",sum/factor);
} }
if (sum != factor*atom->nbonds) error->all("Bonds assigned incorrectly"); if (sum != factor*atom->nbonds) error->all("Bonds assigned incorrectly");
} }
@ -584,9 +585,11 @@ void ReadData::angles()
{ {
int i,m,nchunk; int i,m,nchunk;
int nread = 0; bigint nread = 0;
while (nread < atom->nangles) { bigint nangles = atom->nangles;
nchunk = MIN(atom->nangles-nread,CHUNK);
while (nread < nangles) {
nchunk = MIN(nangles-nread,CHUNK);
if (me == 0) { if (me == 0) {
char *eof; char *eof;
m = 0; m = 0;
@ -604,20 +607,19 @@ void ReadData::angles()
nread += nchunk; nread += nchunk;
} }
// check that angles were assigned correctly // check that ang
int nlocal = atom->nlocal; int nlocal = atom->nlocal;
bigint sum;
int sum; bigint n = 0;
int n = 0;
for (i = 0; i < nlocal; i++) n += atom->num_angle[i]; for (i = 0; i < nlocal; i++) n += atom->num_angle[i];
MPI_Allreduce(&n,&sum,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&n,&sum,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
int factor = 1; int factor = 1;
if (!force->newton_bond) factor = 3; if (!force->newton_bond) factor = 3;
if (me == 0) { if (me == 0) {
if (screen) fprintf(screen," %d angles\n",sum/factor); if (screen) fprintf(screen," %lu angles\n",sum/factor);
if (logfile) fprintf(logfile," %d angles\n",sum/factor); if (logfile) fprintf(logfile," %lu angles\n",sum/factor);
} }
if (sum != factor*atom->nangles) error->all("Angles assigned incorrectly"); if (sum != factor*atom->nangles) error->all("Angles assigned incorrectly");
} }
@ -628,9 +630,11 @@ void ReadData::dihedrals()
{ {
int i,m,nchunk; int i,m,nchunk;
int nread = 0; bigint nread = 0;
while (nread < atom->ndihedrals) { bigint ndihedrals = atom->ndihedrals;
nchunk = MIN(atom->ndihedrals-nread,CHUNK);
while (nread < ndihedrals) {
nchunk = MIN(ndihedrals-nread,CHUNK);
if (me == 0) { if (me == 0) {
char *eof; char *eof;
m = 0; m = 0;
@ -651,17 +655,16 @@ void ReadData::dihedrals()
// check that dihedrals were assigned correctly // check that dihedrals were assigned correctly
int nlocal = atom->nlocal; int nlocal = atom->nlocal;
bigint sum;
int sum; bigint n = 0;
int n = 0;
for (i = 0; i < nlocal; i++) n += atom->num_dihedral[i]; for (i = 0; i < nlocal; i++) n += atom->num_dihedral[i];
MPI_Allreduce(&n,&sum,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&n,&sum,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
int factor = 1; int factor = 1;
if (!force->newton_bond) factor = 4; if (!force->newton_bond) factor = 4;
if (me == 0) { if (me == 0) {
if (screen) fprintf(screen," %d dihedrals\n",sum/factor); if (screen) fprintf(screen," %lu dihedrals\n",sum/factor);
if (logfile) fprintf(logfile," %d dihedrals\n",sum/factor); if (logfile) fprintf(logfile," %lu dihedrals\n",sum/factor);
} }
if (sum != factor*atom->ndihedrals) if (sum != factor*atom->ndihedrals)
error->all("Dihedrals assigned incorrectly"); error->all("Dihedrals assigned incorrectly");
@ -673,9 +676,11 @@ void ReadData::impropers()
{ {
int i,m,nchunk; int i,m,nchunk;
int nread = 0; bigint nread = 0;
while (nread < atom->nimpropers) { bigint nimpropers = atom->nimpropers;
nchunk = MIN(atom->nimpropers-nread,CHUNK);
while (nread < nimpropers) {
nchunk = MIN(nread,CHUNK);
if (me == 0) { if (me == 0) {
char *eof; char *eof;
m = 0; m = 0;
@ -696,17 +701,16 @@ void ReadData::impropers()
// check that impropers were assigned correctly // check that impropers were assigned correctly
int nlocal = atom->nlocal; int nlocal = atom->nlocal;
bigint sum;
int sum; bigint n = 0;
int n = 0;
for (i = 0; i < nlocal; i++) n += atom->num_improper[i]; for (i = 0; i < nlocal; i++) n += atom->num_improper[i];
MPI_Allreduce(&n,&sum,1,MPI_INT,MPI_SUM,world); MPI_Allreduce(&n,&sum,1,MPI_UNSIGNED_LONG,MPI_SUM,world);
int factor = 1; int factor = 1;
if (!force->newton_bond) factor = 4; if (!force->newton_bond) factor = 4;
if (me == 0) { if (me == 0) {
if (screen) fprintf(screen," %d impropers\n",sum/factor); if (screen) fprintf(screen," %lu impropers\n",sum/factor);
if (logfile) fprintf(logfile," %d impropers\n",sum/factor); if (logfile) fprintf(logfile," %lu impropers\n",sum/factor);
} }
if (sum != factor*atom->nimpropers) if (sum != factor*atom->nimpropers)
error->all("Impropers assigned incorrectly"); error->all("Impropers assigned incorrectly");
@ -972,6 +976,9 @@ void ReadData::scan(int &bond_per_atom, int &angle_per_atom,
int i,tmp1,tmp2,atom1,atom2,atom3,atom4; int i,tmp1,tmp2,atom1,atom2,atom3,atom4;
char *eof; char *eof;
if (atom->natoms > MAXINT32)
error->all("Molecular data file has too many atoms");
int natoms = static_cast<int> (atom->natoms); int natoms = static_cast<int> (atom->natoms);
bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0;

View File

@ -304,20 +304,20 @@ void ReadRestart::command(int narg, char **arg)
if (me == 0) { if (me == 0) {
if (atom->nbonds) { if (atom->nbonds) {
if (screen) fprintf(screen," %d bonds\n",atom->nbonds); if (screen) fprintf(screen," %lu bonds\n",atom->nbonds);
if (logfile) fprintf(logfile," %d bonds\n",atom->nbonds); if (logfile) fprintf(logfile," %lu bonds\n",atom->nbonds);
} }
if (atom->nangles) { if (atom->nangles) {
if (screen) fprintf(screen," %d angles\n",atom->nangles); if (screen) fprintf(screen," %lu angles\n",atom->nangles);
if (logfile) fprintf(logfile," %d angles\n",atom->nangles); if (logfile) fprintf(logfile," %lu angles\n",atom->nangles);
} }
if (atom->ndihedrals) { if (atom->ndihedrals) {
if (screen) fprintf(screen," %d dihedrals\n",atom->ndihedrals); if (screen) fprintf(screen," %lu dihedrals\n",atom->ndihedrals);
if (logfile) fprintf(logfile," %d dihedrals\n",atom->ndihedrals); if (logfile) fprintf(logfile," %lu dihedrals\n",atom->ndihedrals);
} }
if (atom->nimpropers) { if (atom->nimpropers) {
if (screen) fprintf(screen," %d impropers\n",atom->nimpropers); if (screen) fprintf(screen," %lu impropers\n",atom->nimpropers);
if (logfile) fprintf(logfile," %d impropers\n",atom->nimpropers); if (logfile) fprintf(logfile," %lu impropers\n",atom->nimpropers);
} }
} }
@ -599,25 +599,25 @@ void ReadRestart::header()
} else if (flag == NTYPES) { } else if (flag == NTYPES) {
atom->ntypes = read_int(); atom->ntypes = read_int();
} else if (flag == NBONDS) { } else if (flag == NBONDS) {
atom->nbonds = read_int(); atom->nbonds = read_bigint();
} else if (flag == NBONDTYPES) { } else if (flag == NBONDTYPES) {
atom->nbondtypes = read_int(); atom->nbondtypes = read_int();
} else if (flag == BOND_PER_ATOM) { } else if (flag == BOND_PER_ATOM) {
atom->bond_per_atom = read_int(); atom->bond_per_atom = read_int();
} else if (flag == NANGLES) { } else if (flag == NANGLES) {
atom->nangles = read_int(); atom->nangles = read_bigint();
} else if (flag == NANGLETYPES) { } else if (flag == NANGLETYPES) {
atom->nangletypes = read_int(); atom->nangletypes = read_int();
} else if (flag == ANGLE_PER_ATOM) { } else if (flag == ANGLE_PER_ATOM) {
atom->angle_per_atom = read_int(); atom->angle_per_atom = read_int();
} else if (flag == NDIHEDRALS) { } else if (flag == NDIHEDRALS) {
atom->ndihedrals = read_int(); atom->ndihedrals = read_bigint();
} else if (flag == NDIHEDRALTYPES) { } else if (flag == NDIHEDRALTYPES) {
atom->ndihedraltypes = read_int(); atom->ndihedraltypes = read_int();
} else if (flag == DIHEDRAL_PER_ATOM) { } else if (flag == DIHEDRAL_PER_ATOM) {
atom->dihedral_per_atom = read_int(); atom->dihedral_per_atom = read_int();
} else if (flag == NIMPROPERS) { } else if (flag == NIMPROPERS) {
atom->nimpropers = read_int(); atom->nimpropers = read_bigint();
} else if (flag == NIMPROPERTYPES) { } else if (flag == NIMPROPERTYPES) {
atom->nimpropertypes = read_int(); atom->nimpropertypes = read_int();
} else if (flag == IMPROPER_PER_ATOM) { } else if (flag == IMPROPER_PER_ATOM) {

View File

@ -334,16 +334,16 @@ void WriteRestart::header()
write_bigint(NATOMS,natoms); write_bigint(NATOMS,natoms);
write_int(NTYPES,atom->ntypes); write_int(NTYPES,atom->ntypes);
write_int(NBONDS,atom->nbonds); write_bigint(NBONDS,atom->nbonds);
write_int(NBONDTYPES,atom->nbondtypes); write_int(NBONDTYPES,atom->nbondtypes);
write_int(BOND_PER_ATOM,atom->bond_per_atom); write_int(BOND_PER_ATOM,atom->bond_per_atom);
write_int(NANGLES,atom->nangles); write_bigint(NANGLES,atom->nangles);
write_int(NANGLETYPES,atom->nangletypes); write_int(NANGLETYPES,atom->nangletypes);
write_int(ANGLE_PER_ATOM,atom->angle_per_atom); write_int(ANGLE_PER_ATOM,atom->angle_per_atom);
write_int(NDIHEDRALS,atom->ndihedrals); write_bigint(NDIHEDRALS,atom->ndihedrals);
write_int(NDIHEDRALTYPES,atom->ndihedraltypes); write_int(NDIHEDRALTYPES,atom->ndihedraltypes);
write_int(DIHEDRAL_PER_ATOM,atom->dihedral_per_atom); write_int(DIHEDRAL_PER_ATOM,atom->dihedral_per_atom);
write_int(NIMPROPERS,atom->nimpropers); write_bigint(NIMPROPERS,atom->nimpropers);
write_int(NIMPROPERTYPES,atom->nimpropertypes); write_int(NIMPROPERTYPES,atom->nimpropertypes);
write_int(IMPROPER_PER_ATOM,atom->improper_per_atom); write_int(IMPROPER_PER_ATOM,atom->improper_per_atom);