Write dump header after sort to fix incorrect atom count for multiproc

This commit is contained in:
Stan Gerald Moore
2021-11-18 08:32:41 -07:00
parent 5616336d5e
commit 94b11964f8

View File

@ -367,16 +367,6 @@ void Dump::write()
if (multiproc != nprocs) MPI_Allreduce(&nme,&nmax,1,MPI_INT,MPI_MAX,world);
else nmax = nme;
// write timestep header
// for multiproc,
// nheader = # of lines in this file via Allreduce on clustercomm
bigint nheader = ntotal;
if (multiproc)
MPI_Allreduce(&bnme,&nheader,1,MPI_LMP_BIGINT,MPI_SUM,clustercomm);
if (filewriter && write_header_flag) write_header(nheader);
// insure buf is sized for packing and communicating
// use nmax to insure filewriter proc can receive info from others
// limit nmax*size_one to int since used as arg in MPI calls
@ -429,6 +419,19 @@ void Dump::write()
else pack(nullptr);
if (sort_flag) sort();
// write timestep header
// for multiproc,
// nheader = # of lines in this file via Allreduce on clustercomm
// must come after sort, which can change nme
bigint nheader = ntotal;
if (multiproc) {
bnme = nme;
MPI_Allreduce(&bnme,&nheader,1,MPI_LMP_BIGINT,MPI_SUM,clustercomm);
}
if (filewriter && write_header_flag) write_header(nheader);
// if buffering, convert doubles into strings
// insure sbuf is sized for communicating
// cannot buffer if output is to binary file