Commit c88acc96 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

make reader for target geometry file more resilient

parent f7b5afee
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -391,7 +391,7 @@ void FixTMD::readfile(char *file)

  char *buffer = new char[CHUNK*MAXLINE];
  char *next,*bufptr;
  int i,m,nlines,imageflag,ix,iy,iz;
  int i,m,n,nlines,imageflag,ix,iy,iz;
  tagint itag;
  double x,y,z,xprd,yprd,zprd;

@@ -400,7 +400,7 @@ void FixTMD::readfile(char *file)
  char *eof = NULL;
  xprd = yprd = zprd = -1.0;

  while (!eof) {
  do {
    if (me == 0) {
      m = 0;
      for (nlines = 0; nlines < CHUNK; nlines++) {
@@ -412,7 +412,7 @@ void FixTMD::readfile(char *file)
      m++;
    }

    MPI_Bcast(&eof,1,MPI_INT,0,world);
    MPI_Bcast(&eof,sizeof(char *)/sizeof(char),MPI_CHAR,0,world);
    MPI_Bcast(&nlines,1,MPI_INT,0,world);
    MPI_Bcast(&m,1,MPI_INT,0,world);
    MPI_Bcast(buffer,m,MPI_CHAR,0,world);
@@ -455,10 +455,17 @@ void FixTMD::readfile(char *file)
      }

      if (imageflag)
        sscanf(bufptr,TAGINT_FORMAT " %lg %lg %lg %d %d %d",
        n = sscanf(bufptr,TAGINT_FORMAT " %lg %lg %lg %d %d %d",
                   &itag,&x,&y,&z,&ix,&iy,&iz);
      else
        sscanf(bufptr,TAGINT_FORMAT " %lg %lg %lg",&itag,&x,&y,&z);
        n = sscanf(bufptr,TAGINT_FORMAT " %lg %lg %lg",&itag,&x,&y,&z);

      if (n < 0 && me == 0) {
        error->warning(FLERR,"Ignoring empty or incorrectly formatted"
                             " line in target file");
        bufptr = next + 1;
        continue;
      }

      m = atom->map(itag);
      if (m >= 0 && m < nlocal && mask[m] & groupbit) {
@@ -473,10 +480,9 @@ void FixTMD::readfile(char *file)
        }
        ncount++;
      }

      bufptr = next + 1;
    }
  }
  } while (eof != NULL);

  // clean up