| 113 | 
  | 
            simError(); | 
| 114 | 
  | 
        } | 
| 115 | 
  | 
 | 
| 116 | 
< | 
        MemoryUtils::deleteVectorOfPointer(framePos_); | 
| 116 | 
> | 
        MemoryUtils::deletePointers(framePos_); | 
| 117 | 
  | 
 | 
| 118 | 
  | 
#ifdef IS_MPI | 
| 119 | 
  | 
 | 
| 219 | 
  | 
} | 
| 220 | 
  | 
 | 
| 221 | 
  | 
void DumpReader::readFrame(int whichFrame) { | 
| 222 | 
+ | 
    int storageLayout = info_->getSnapshotManager()->getStorageLayout(); | 
| 223 | 
+ | 
 | 
| 224 | 
+ | 
    if (storageLayout & DataStorage::dslPosition) { | 
| 225 | 
+ | 
        needPos_ = true; | 
| 226 | 
+ | 
    } else { | 
| 227 | 
+ | 
        needPos_ = false; | 
| 228 | 
+ | 
    } | 
| 229 | 
+ | 
 | 
| 230 | 
+ | 
    if (storageLayout & DataStorage::dslVelocity) { | 
| 231 | 
+ | 
        needVel_ = true; | 
| 232 | 
+ | 
    } else { | 
| 233 | 
+ | 
        needVel_ = false; | 
| 234 | 
+ | 
    } | 
| 235 | 
+ | 
 | 
| 236 | 
+ | 
    if (storageLayout & DataStorage::dslAmat || storageLayout & DataStorage::dslElectroFrame) { | 
| 237 | 
+ | 
        needQuaternion_ = true; | 
| 238 | 
+ | 
    } else { | 
| 239 | 
+ | 
        needQuaternion_ = false; | 
| 240 | 
+ | 
    } | 
| 241 | 
+ | 
 | 
| 242 | 
+ | 
    if (storageLayout & DataStorage::dslAngularMomentum) { | 
| 243 | 
+ | 
        needAngMom_ = true; | 
| 244 | 
+ | 
    } else { | 
| 245 | 
+ | 
        needAngMom_ = false;     | 
| 246 | 
+ | 
    } | 
| 247 | 
+ | 
 | 
| 248 | 
  | 
    readSet(whichFrame); | 
| 249 | 
  | 
} | 
| 250 | 
  | 
 | 
| 511 | 
  | 
 | 
| 512 | 
  | 
    if (nTokens < 14) { | 
| 513 | 
  | 
            sprintf(painCave.errMsg, | 
| 514 | 
< | 
                    "DumpReader Error: Not enough Tokens.\n"); | 
| 514 | 
> | 
                    "DumpReader Error: Not enough Tokens.\n%s\n", line); | 
| 515 | 
  | 
            painCave.isFatal = 1; | 
| 516 | 
  | 
            simError(); | 
| 517 | 
  | 
    } | 
| 530 | 
  | 
    pos[0] = tokenizer.nextTokenAsDouble(); | 
| 531 | 
  | 
    pos[1] = tokenizer.nextTokenAsDouble(); | 
| 532 | 
  | 
    pos[2] = tokenizer.nextTokenAsDouble(); | 
| 533 | 
< | 
    integrableObject->setPos(pos); | 
| 533 | 
> | 
    if (needPos_) { | 
| 534 | 
> | 
        integrableObject->setPos(pos); | 
| 535 | 
> | 
    } | 
| 536 | 
  | 
     | 
| 537 | 
  | 
    vel[0] = tokenizer.nextTokenAsDouble(); | 
| 538 | 
  | 
    vel[1] = tokenizer.nextTokenAsDouble(); | 
| 539 | 
  | 
    vel[2] = tokenizer.nextTokenAsDouble(); | 
| 540 | 
< | 
    integrableObject->setVel(vel); | 
| 541 | 
< | 
 | 
| 540 | 
> | 
    if (needVel_) { | 
| 541 | 
> | 
        integrableObject->setVel(vel); | 
| 542 | 
> | 
    } | 
| 543 | 
> | 
     | 
| 544 | 
  | 
    if (integrableObject->isDirectional()) { | 
| 545 | 
  | 
         | 
| 546 | 
  | 
        q[0] = tokenizer.nextTokenAsDouble(); | 
| 559 | 
  | 
        }  | 
| 560 | 
  | 
 | 
| 561 | 
  | 
        q.normalize(); | 
| 562 | 
< | 
                | 
| 563 | 
< | 
        integrableObject->setQ(q); | 
| 564 | 
< | 
         | 
| 562 | 
> | 
        if (needQuaternion_) {            | 
| 563 | 
> | 
            integrableObject->setQ(q); | 
| 564 | 
> | 
        } | 
| 565 | 
> | 
 | 
| 566 | 
  | 
        ji[0] = tokenizer.nextTokenAsDouble(); | 
| 567 | 
  | 
        ji[1] = tokenizer.nextTokenAsDouble(); | 
| 568 | 
  | 
        ji[2] = tokenizer.nextTokenAsDouble(); | 
| 569 | 
< | 
        integrableObject->setJ(ji); | 
| 569 | 
> | 
        if (needAngMom_) { | 
| 570 | 
> | 
            integrableObject->setJ(ji); | 
| 571 | 
> | 
        } | 
| 572 | 
  | 
    } | 
| 573 | 
  | 
 | 
| 574 | 
  | 
} | 
| 610 | 
  | 
    hmat(2, 2) = tokenizer.nextTokenAsDouble(); | 
| 611 | 
  | 
    s->setHmat(hmat); | 
| 612 | 
  | 
     | 
| 613 | 
< | 
    //read chi and integrablOfChidt, they should apprear in pair | 
| 613 | 
> | 
    //read chi and integralOfChidt, they should apprear in pair | 
| 614 | 
  | 
    if (tokenizer.countTokens() >= 2) { | 
| 615 | 
  | 
        chi = tokenizer.nextTokenAsDouble(); | 
| 616 | 
  | 
        integralOfChiDt = tokenizer.nextTokenAsDouble();             |