Unverified Commit e413aaf2 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

add support for optionally including unit information in standard dump files

parent 4bbe4c73
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -108,27 +108,26 @@ void DumpAtomGZ::openfile()
void DumpAtomGZ::write_header(bigint ndump)
{
  if ((multiproc) || (!multiproc && me == 0)) {
    if (domain->triclinic == 0) {
    if (unit_flag && !unit_count) {
      ++unit_count;
      gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style);
    }
    gzprintf(gzFp,"ITEM: TIMESTEP\n");
    gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep);
    gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n");
    gzprintf(gzFp,BIGINT_FORMAT "\n",ndump);
    if (domain->triclinic == 0) {
      gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr);
      gzprintf(gzFp,"%g %g\n",boxxlo,boxxhi);
      gzprintf(gzFp,"%g %g\n",boxylo,boxyhi);
      gzprintf(gzFp,"%g %g\n",boxzlo,boxzhi);
      gzprintf(gzFp,"ITEM: ATOMS %s\n",columns);
    } else {
      gzprintf(gzFp,"ITEM: TIMESTEP\n");
      gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep);
      gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n");
      gzprintf(gzFp,BIGINT_FORMAT "\n",ndump);
      gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr);
      gzprintf(gzFp,"%g %g %g\n",boxxlo,boxxhi,boxxy);
      gzprintf(gzFp,"%g %g %g\n",boxylo,boxyhi,boxxz);
      gzprintf(gzFp,"%g %g %g\n",boxzlo,boxzhi,boxyz);
      gzprintf(gzFp,"ITEM: ATOMS %s\n",columns);
    }
    gzprintf(gzFp,"ITEM: ATOMS %s\n",columns);
  }
}

+9 −10
Original line number Diff line number Diff line
@@ -108,27 +108,26 @@ void DumpCustomGZ::openfile()
void DumpCustomGZ::write_header(bigint ndump)
{
  if ((multiproc) || (!multiproc && me == 0)) {
    if (domain->triclinic == 0) {
    if (unit_flag && !unit_count) {
      ++unit_count;
      gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style);
    }
    gzprintf(gzFp,"ITEM: TIMESTEP\n");
    gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep);
    gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n");
    gzprintf(gzFp,BIGINT_FORMAT "\n",ndump);
    if (domain->triclinic == 0) {
      gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr);
      gzprintf(gzFp,"%-1.16g %-1.16g\n",boxxlo,boxxhi);
      gzprintf(gzFp,"%-1.16g %-1.16g\n",boxylo,boxyhi);
      gzprintf(gzFp,"%-1.16g %-1.16g\n",boxzlo,boxzhi);
      gzprintf(gzFp,"ITEM: ATOMS %s\n",columns);
    } else {
      gzprintf(gzFp,"ITEM: TIMESTEP\n");
      gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep);
      gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n");
      gzprintf(gzFp,BIGINT_FORMAT "\n",ndump);
      gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr);
      gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxxlo,boxxhi,boxxy);
      gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxylo,boxyhi,boxxz);
      gzprintf(gzFp,"%-1.16g %-1.16g %-1.16g\n",boxzlo,boxzhi,boxyz);
      gzprintf(gzFp,"ITEM: ATOMS %s\n",columns);
    }
    gzprintf(gzFp,"ITEM: ATOMS %s\n",columns);
  }
}

+11 −0
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ Dump::Dump(LAMMPS *lmp, int /*narg*/, char **arg) : Pointers(lmp)
  buffer_flag = 0;
  padflag = 0;
  pbcflag = 0;
  unit_flag = 0;
  unit_count = 0;
  delay_flag = 0;

  maxfiles = -1;
@@ -545,6 +547,8 @@ void Dump::openfile()
  if (singlefile_opened) return;
  if (multifile == 0) singlefile_opened = 1;

  unit_count = 0;

  // if one file per timestep, replace '*' with current timestep

  char *filecurrent = filename;
@@ -1119,6 +1123,13 @@ void Dump::modify_params(int narg, char **arg)
      }
      iarg += 2;

    } else if (strcmp(arg[iarg],"units") == 0) {
      if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
      if (strcmp(arg[iarg+1],"yes") == 0) unit_flag = 1;
      else if (strcmp(arg[iarg+1],"no") == 0) unit_flag = 0;
      else error->all(FLERR,"Illegal dump_modify command");
      iarg += 2;

    } else {
      int n = modify_param(narg-iarg,&arg[iarg]);
      if (n == 0) error->all(FLERR,"Illegal dump_modify command");
+2 −0
Original line number Diff line number Diff line
@@ -75,6 +75,8 @@ class Dump : protected Pointers {
  int sortcol;               // 0 to sort on ID, 1-N on columns
  int sortcolm1;             // sortcol - 1
  int sortorder;             // ASCEND or DESCEND
  int unit_flag;             // 1 if dump should contain unit information
  int unit_count;            // # of times the unit information was written
  int delay_flag;            // 1 if delay output until delaystep
  bigint delaystep;

+8 −2
Original line number Diff line number Diff line
@@ -209,7 +209,10 @@ void DumpAtom::header_binary_triclinic(bigint ndump)

void DumpAtom::header_item(bigint ndump)
{
  if (unit_flag && !unit_count) {
    ++unit_count;
    fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style);
  }
  fprintf(fp,"ITEM: TIMESTEP\n");
  fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep);
  fprintf(fp,"ITEM: NUMBER OF ATOMS\n");
@@ -225,7 +228,10 @@ void DumpAtom::header_item(bigint ndump)

void DumpAtom::header_item_triclinic(bigint ndump)
{
  if (unit_flag && !unit_count) {
    ++unit_count;
    fprintf(fp,"ITEM: UNITS\n%s\n",update->unit_style);
  }
  fprintf(fp,"ITEM: TIMESTEP\n");
  fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep);
  fprintf(fp,"ITEM: NUMBER OF ATOMS\n");
Loading