diff --git a/doc/Manual.html b/doc/Manual.html
index e1c9d19dae..441f8132fc 100644
--- a/doc/Manual.html
+++ b/doc/Manual.html
@@ -22,7 +22,7 @@
LAMMPS-ICMS Documentation
-6 Apr 2013 version
+12 Apr 2013 version
Version info:
diff --git a/doc/Manual.txt b/doc/Manual.txt
index f8f213eb98..c7d1553ed2 100644
--- a/doc/Manual.txt
+++ b/doc/Manual.txt
@@ -18,7 +18,7 @@
LAMMPS-ICMS Documentation :c,h3
-6 Apr 2013 version :c,h4
+12 Apr 2013 version :c,h4
Version info: :h4
diff --git a/src/dump_cfg.cpp b/src/dump_cfg.cpp
index 3792ee5c57..e5adf3e252 100644
--- a/src/dump_cfg.cpp
+++ b/src/dump_cfg.cpp
@@ -143,37 +143,29 @@ void DumpCFG::write_header(bigint n)
} else if (unwrapflag == 1) scale = UNWRAPEXPAND;
else scale = 1.0;
- if (me == 0 || multiproc) {
- char str[64];
- sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT);
- fprintf(fp,str,n);
- fprintf(fp,"A = %g Angstrom (basic length-scale)\n",scale);
- fprintf(fp,"H0(1,1) = %g A\n",domain->xprd);
- fprintf(fp,"H0(1,2) = 0 A \n");
- fprintf(fp,"H0(1,3) = 0 A \n");
- fprintf(fp,"H0(2,1) = %g A \n",domain->xy);
- fprintf(fp,"H0(2,2) = %g A\n",domain->yprd);
- fprintf(fp,"H0(2,3) = 0 A \n");
- fprintf(fp,"H0(3,1) = %g A \n",domain->xz);
- fprintf(fp,"H0(3,2) = %g A \n",domain->yz);
- fprintf(fp,"H0(3,3) = %g A\n",domain->zprd);
- fprintf(fp,".NO_VELOCITY.\n");
- fprintf(fp,"entry_count = %d\n",nfield-2);
- for (int i = 0; i < nfield-5; i++)
- fprintf(fp,"auxiliary[%d] = %s\n",i,auxname[i]);
- }
+ char str[64];
+ sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT);
+ fprintf(fp,str,n);
+ fprintf(fp,"A = %g Angstrom (basic length-scale)\n",scale);
+ fprintf(fp,"H0(1,1) = %g A\n",domain->xprd);
+ fprintf(fp,"H0(1,2) = 0 A \n");
+ fprintf(fp,"H0(1,3) = 0 A \n");
+ fprintf(fp,"H0(2,1) = %g A \n",domain->xy);
+ fprintf(fp,"H0(2,2) = %g A\n",domain->yprd);
+ fprintf(fp,"H0(2,3) = 0 A \n");
+ fprintf(fp,"H0(3,1) = %g A \n",domain->xz);
+ fprintf(fp,"H0(3,2) = %g A \n",domain->yz);
+ fprintf(fp,"H0(3,3) = %g A\n",domain->zprd);
+ fprintf(fp,".NO_VELOCITY.\n");
+ fprintf(fp,"entry_count = %d\n",nfield-2);
+ for (int i = 0; i < nfield-5; i++)
+ fprintf(fp,"auxiliary[%d] = %s\n",i,auxname[i]);
- // calculate total # of data lines to be written on a writing proc
+ // allocate memory needed for data rearrangement
- if (multiproc) nchosen = nme;
- else MPI_Reduce(&nme,&nchosen,1,MPI_INT,MPI_SUM,0,world);
-
- // allocate memory needed for data rearrangement on writing proc(s)
-
- if (multiproc || me == 0) {
- if (rbuf) memory->destroy(rbuf);
- memory->create(rbuf,nchosen,size_one,"dump:rbuf");
- }
+ nchosen = static_cast (n);
+ if (rbuf) memory->destroy(rbuf);
+ memory->create(rbuf,nchosen,size_one,"dump:rbuf");
}
/* ----------------------------------------------------------------------
diff --git a/src/version.h b/src/version.h
index a434766cb2..d26cd59362 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "6 Apr 2013"
+#define LAMMPS_VERSION "12 Apr 2013"
diff --git a/src/write_data.cpp b/src/write_data.cpp
index eb1ea39b9b..cfb1f7855a 100644
--- a/src/write_data.cpp
+++ b/src/write_data.cpp
@@ -117,6 +117,18 @@ void WriteData::write(char *file)
if (natoms != atom->natoms && output->thermo->lostflag == ERROR)
error->all(FLERR,"Atom count is inconsistent, cannot write data file");
+ // sum up bond,angle counts
+ // may be different than atom->nbonds,nangles if broken/turned-off
+
+ if (atom->nbonds || atom->nbondtypes) {
+ nbonds_local = atom->avec->pack_bond(NULL);
+ MPI_Allreduce(&nbonds_local,&nbonds,1,MPI_LMP_BIGINT,MPI_SUM,world);
+ }
+ if (atom->nangles || atom->nangletypes) {
+ nangles_local = atom->avec->pack_angle(NULL);
+ MPI_Allreduce(&nangles_local,&nangles,1,MPI_LMP_BIGINT,MPI_SUM,world);
+ }
+
// open data file
if (me == 0) {
@@ -166,14 +178,10 @@ void WriteData::header()
fprintf(fp,"%d atom types\n",atom->ntypes);
if (atom->nbonds || atom->nbondtypes) {
- nbonds_local = atom->avec->pack_bond(NULL);
- MPI_Allreduce(&nbonds_local,&nbonds,1,MPI_LMP_BIGINT,MPI_SUM,world);
fprintf(fp,BIGINT_FORMAT " bonds\n",nbonds);
fprintf(fp,"%d bond types\n",atom->nbondtypes);
}
if (atom->nangles || atom->nangletypes) {
- nangles_local = atom->avec->pack_angle(NULL);
- MPI_Allreduce(&nangles_local,&nangles,1,MPI_LMP_BIGINT,MPI_SUM,world);
fprintf(fp,BIGINT_FORMAT " angles\n",nangles);
fprintf(fp,"%d angle types\n",atom->nangletypes);
}
@@ -278,8 +286,9 @@ void WriteData::atoms()
MPI_Send(&tmp,0,MPI_INT,iproc,0,world);
MPI_Wait(&request,&status);
MPI_Get_count(&status,MPI_DOUBLE,&recvrow);
+ recvrow /= ncol;
} else recvrow = sendrow;
-
+
atom->avec->write_data(fp,recvrow,buf);
}
@@ -330,6 +339,7 @@ void WriteData::velocities()
MPI_Send(&tmp,0,MPI_INT,iproc,0,world);
MPI_Wait(&request,&status);
MPI_Get_count(&status,MPI_DOUBLE,&recvrow);
+ recvrow /= ncol;
} else recvrow = sendrow;
atom->avec->write_vel(fp,recvrow,buf);
@@ -362,7 +372,7 @@ void WriteData::bonds()
// pack my bond data into buf
- atom->avec->pack_bond(buf);
+ int foo = atom->avec->pack_bond(buf);
// write one chunk of atoms per proc to file
// proc 0 pings each proc, receives its chunk, writes to file
@@ -377,19 +387,20 @@ void WriteData::bonds()
fprintf(fp,"\nBonds\n\n");
for (int iproc = 0; iproc < nprocs; iproc++) {
if (iproc) {
- MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_DOUBLE,iproc,0,world,&request);
+ MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_INT,iproc,0,world,&request);
MPI_Send(&tmp,0,MPI_INT,iproc,0,world);
MPI_Wait(&request,&status);
- MPI_Get_count(&status,MPI_DOUBLE,&recvrow);
+ MPI_Get_count(&status,MPI_INT,&recvrow);
+ recvrow /= ncol;
} else recvrow = sendrow;
-
+
atom->avec->write_bond(fp,recvrow,buf,index);
index += recvrow;
}
} else {
MPI_Recv(&tmp,0,MPI_INT,0,0,world,&status);
- MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_DOUBLE,0,0,world);
+ MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_INT,0,0,world);
}
memory->destroy(buf);
@@ -429,10 +440,11 @@ void WriteData::angles()
fprintf(fp,"\nAngles\n\n");
for (int iproc = 0; iproc < nprocs; iproc++) {
if (iproc) {
- MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_DOUBLE,iproc,0,world,&request);
+ MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_INT,iproc,0,world,&request);
MPI_Send(&tmp,0,MPI_INT,iproc,0,world);
MPI_Wait(&request,&status);
- MPI_Get_count(&status,MPI_DOUBLE,&recvrow);
+ MPI_Get_count(&status,MPI_INT,&recvrow);
+ recvrow /= ncol;
} else recvrow = sendrow;
atom->avec->write_angle(fp,recvrow,buf,index);
@@ -441,7 +453,7 @@ void WriteData::angles()
} else {
MPI_Recv(&tmp,0,MPI_INT,0,0,world,&status);
- MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_DOUBLE,0,0,world);
+ MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_INT,0,0,world);
}
memory->destroy(buf);
@@ -499,10 +511,11 @@ void WriteData::dihedrals()
fprintf(fp,"\nDihedrals\n\n");
for (int iproc = 0; iproc < nprocs; iproc++) {
if (iproc) {
- MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_DOUBLE,iproc,0,world,&request);
+ MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_INT,iproc,0,world,&request);
MPI_Send(&tmp,0,MPI_INT,iproc,0,world);
MPI_Wait(&request,&status);
- MPI_Get_count(&status,MPI_DOUBLE,&recvrow);
+ MPI_Get_count(&status,MPI_INT,&recvrow);
+ recvrow /= ncol;
} else recvrow = sendrow;
atom->avec->write_dihedral(fp,recvrow,buf,index);
@@ -511,7 +524,7 @@ void WriteData::dihedrals()
} else {
MPI_Recv(&tmp,0,MPI_INT,0,0,world,&status);
- MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_DOUBLE,0,0,world);
+ MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_INT,0,0,world);
}
memory->destroy(buf);
@@ -569,10 +582,11 @@ void WriteData::impropers()
fprintf(fp,"\nImpropers\n\n");
for (int iproc = 0; iproc < nprocs; iproc++) {
if (iproc) {
- MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_DOUBLE,iproc,0,world,&request);
+ MPI_Irecv(&buf[0][0],maxrow*ncol,MPI_INT,iproc,0,world,&request);
MPI_Send(&tmp,0,MPI_INT,iproc,0,world);
MPI_Wait(&request,&status);
- MPI_Get_count(&status,MPI_DOUBLE,&recvrow);
+ MPI_Get_count(&status,MPI_INT,&recvrow);
+ recvrow /= ncol;
} else recvrow = sendrow;
atom->avec->write_improper(fp,recvrow,buf,index);
@@ -581,7 +595,7 @@ void WriteData::impropers()
} else {
MPI_Recv(&tmp,0,MPI_INT,0,0,world,&status);
- MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_DOUBLE,0,0,world);
+ MPI_Rsend(&buf[0][0],sendrow*ncol,MPI_INT,0,0,world);
}
memory->destroy(buf);