| 1 | 
+ | 
#define _LARGEFILE_SOURCE64 | 
| 2 | 
  | 
#define _FILE_OFFSET_BITS 64 | 
| 3 | 
  | 
 | 
| 4 | 
  | 
#include <sys/types.h> | 
| 34 | 
  | 
using namespace dumpRead; | 
| 35 | 
  | 
 | 
| 36 | 
  | 
 | 
| 37 | 
< | 
DumpReader :: DumpReader( char *in_name ){ | 
| 37 | 
> | 
DumpReader :: DumpReader(const char *in_name ){ | 
| 38 | 
  | 
 | 
| 39 | 
  | 
  isScanned = false; | 
| 40 | 
  | 
  headFP = new FilePos; | 
| 222 | 
  | 
  double time; | 
| 223 | 
  | 
 | 
| 224 | 
  | 
  fpos_t *framePos; | 
| 225 | 
+ | 
  framePos = frameStart[whichFrame]->getPos(); | 
| 226 | 
  | 
   | 
| 227 | 
  | 
#ifndef IS_MPI | 
| 228 | 
  | 
   | 
| 229 | 
< | 
  framePos = frameStart[whichFrame]->getPos(); | 
| 228 | 
< | 
 | 
| 229 | 
> | 
  fsetpos(inFile, framePos); | 
| 230 | 
  | 
   | 
| 231 | 
  | 
 | 
| 231 | 
– | 
 | 
| 232 | 
  | 
  eof_test = fgets(read_buffer, sizeof(read_buffer), inFile); | 
| 233 | 
  | 
  if( eof_test == NULL ){ | 
| 234 | 
  | 
    sprintf( painCave.errMsg, | 
| 316 | 
  | 
   | 
| 317 | 
  | 
  haveError = 0; | 
| 318 | 
  | 
  if (worldRank == 0) { | 
| 319 | 
< | 
 | 
| 319 | 
> | 
    fsetpos(inFile, framePos); | 
| 320 | 
  | 
    eof_test = fgets(read_buffer, sizeof(read_buffer), inFile); | 
| 321 | 
  | 
    if( eof_test == NULL ){ | 
| 322 | 
  | 
      sprintf( painCave.errMsg, | 
| 465 | 
  | 
 | 
| 466 | 
  | 
  char *foo; // the pointer to the current string token  | 
| 467 | 
  | 
   | 
| 468 | 
< | 
  double pos[3]; // position place holders | 
| 469 | 
< | 
  double vel[3]; // velocity placeholders | 
| 470 | 
< | 
  double q[4]; // the quaternions | 
| 471 | 
< | 
  double jx, jy, jz; // angular velocity placeholders; | 
| 468 | 
> | 
  double pos[3];        // position place holders | 
| 469 | 
> | 
  double vel[3];        // velocity placeholders | 
| 470 | 
> | 
  double q[4];          // the quaternions | 
| 471 | 
> | 
  double ji[3];         // angular velocity placeholders; | 
| 472 | 
  | 
  double qSqr, qLength; // needed to normalize the quaternion vector. | 
| 473 | 
  | 
   | 
| 474 | 
  | 
  Atom **atoms = simnfo->atoms; | 
| 497 | 
  | 
  // set the string tokenizer | 
| 498 | 
  | 
   | 
| 499 | 
  | 
  foo = strtok(readLine, " ,;\t"); | 
| 500 | 
< | 
   | 
| 500 | 
> | 
  atoms[atomIndex]->setType(foo); | 
| 501 | 
  | 
  // check the atom name to the current atom | 
| 502 | 
  | 
   | 
| 503 | 
< | 
  if( strcmp( foo, atoms[atomIndex]->getType() ) ){ | 
| 504 | 
< | 
    sprintf( painCave.errMsg, | 
| 505 | 
< | 
             "Initialize from file error. Atom %s at index %d " | 
| 506 | 
< | 
             "in file %s does not" | 
| 507 | 
< | 
             " match the BASS atom %s.\n", | 
| 508 | 
< | 
             foo, atomIndex, inName, atoms[atomIndex]->getType() ); | 
| 509 | 
< | 
    return strdup( painCave.errMsg ); | 
| 510 | 
< | 
  } | 
| 503 | 
> | 
  //if( strcmp( foo, atoms[atomIndex]->getType() ) ){ | 
| 504 | 
> | 
  //  sprintf( painCave.errMsg, | 
| 505 | 
> | 
  //    "Initialize from file error. Atom %s at index %d " | 
| 506 | 
> | 
  //     "in file %s does not" | 
| 507 | 
> | 
  //     " match the BASS atom %s.\n", | 
| 508 | 
> | 
  //     foo, atomIndex, inName, atoms[atomIndex]->getType() ); | 
| 509 | 
> | 
  //  return strdup( painCave.errMsg ); | 
| 510 | 
> | 
  //} | 
| 511 | 
  | 
     | 
| 512 | 
  | 
  // get the positions | 
| 513 | 
  | 
 | 
| 629 | 
  | 
               inName, n_atoms, atomIndex ); | 
| 630 | 
  | 
      return strdup( painCave.errMsg ); | 
| 631 | 
  | 
    } | 
| 632 | 
< | 
    jx = atof( foo ); | 
| 632 | 
> | 
    ji[0] = atof( foo ); | 
| 633 | 
  | 
       | 
| 634 | 
  | 
    foo = strtok(NULL, " ,;\t"); | 
| 635 | 
  | 
    if(foo == NULL){ | 
| 639 | 
  | 
               inName, n_atoms, atomIndex ); | 
| 640 | 
  | 
      return strdup( painCave.errMsg ); | 
| 641 | 
  | 
    } | 
| 642 | 
< | 
    jy = atof(foo ); | 
| 642 | 
> | 
    ji[1] = atof(foo ); | 
| 643 | 
  | 
       | 
| 644 | 
  | 
    foo = strtok(NULL, " ,;\t"); | 
| 645 | 
  | 
    if(foo == NULL){ | 
| 649 | 
  | 
               inName, n_atoms, atomIndex ); | 
| 650 | 
  | 
      return strdup( painCave.errMsg ); | 
| 651 | 
  | 
    } | 
| 652 | 
< | 
    jz = atof( foo ); | 
| 652 | 
> | 
    ji[2] = atof( foo ); | 
| 653 | 
  | 
       | 
| 654 | 
  | 
    dAtom = ( DirectionalAtom* )atoms[atomIndex]; | 
| 655 | 
  | 
 | 
| 667 | 
  | 
       | 
| 668 | 
  | 
    // add the angular velocities | 
| 669 | 
  | 
 | 
| 670 | 
< | 
    dAtom->setJx( jx ); | 
| 671 | 
< | 
    dAtom->setJy( jy ); | 
| 672 | 
< | 
    dAtom->setJz( jz ); | 
| 670 | 
> | 
    dAtom->setJ( ji ); | 
| 671 | 
  | 
  } | 
| 672 | 
  | 
     | 
| 673 | 
  | 
  // add the positions and velocities to the atom |