| 73 | 
  | 
                                nGlobalIntegrableObjects_(0), nGlobalRigidBodies_(0), | 
| 74 | 
  | 
                                nAtoms_(0), nBonds_(0),  nBends_(0), nTorsions_(0), nRigidBodies_(0), | 
| 75 | 
  | 
                                nIntegrableObjects_(0),  nCutoffGroups_(0), nConstraints_(0), | 
| 76 | 
< | 
                                sman_(NULL), fortranInitialized_(false), selectMan_(NULL) { | 
| 76 | 
> | 
                                sman_(NULL), fortranInitialized_(false) { | 
| 77 | 
  | 
 | 
| 78 | 
  | 
             | 
| 79 | 
  | 
    std::vector<std::pair<MoleculeStamp*, int> >::iterator i; | 
| 139 | 
  | 
    molToProcMap_.resize(nGlobalMols_); | 
| 140 | 
  | 
#endif | 
| 141 | 
  | 
 | 
| 142 | 
– | 
    selectMan_ = new SelectionManager(this); | 
| 143 | 
– | 
    selectMan_->selectAll(); | 
| 142 | 
  | 
} | 
| 143 | 
  | 
 | 
| 144 | 
  | 
SimInfo::~SimInfo() { | 
| 145 | 
< | 
    //MemoryUtils::deleteVectorOfPointer(molecules_); | 
| 146 | 
< | 
 | 
| 147 | 
< | 
    MemoryUtils::deleteVectorOfPointer(moleculeStamps_); | 
| 145 | 
> | 
    std::map<int, Molecule*>::iterator i; | 
| 146 | 
> | 
    for (i = molecules_.begin(); i != molecules_.end(); ++i) { | 
| 147 | 
> | 
        delete i->second; | 
| 148 | 
> | 
    } | 
| 149 | 
> | 
    molecules_.clear(); | 
| 150 | 
  | 
     | 
| 151 | 
+ | 
    MemoryUtils::deletePointers(moleculeStamps_); | 
| 152 | 
+ | 
     | 
| 153 | 
  | 
    delete sman_; | 
| 154 | 
  | 
    delete simParams_; | 
| 155 | 
  | 
    delete forceField_; | 
| 154 | 
– | 
    delete selectMan_; | 
| 156 | 
  | 
} | 
| 157 | 
  | 
 | 
| 158 | 
  | 
int SimInfo::getNGlobalConstraints() { | 
| 367 | 
  | 
        exclude_.addPair(c, d);         | 
| 368 | 
  | 
    } | 
| 369 | 
  | 
 | 
| 370 | 
< | 
     | 
| 370 | 
> | 
    Molecule::RigidBodyIterator rbIter; | 
| 371 | 
> | 
    RigidBody* rb; | 
| 372 | 
> | 
    for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { | 
| 373 | 
> | 
        std::vector<Atom*> atoms = rb->getAtoms(); | 
| 374 | 
> | 
        for (int i = 0; i < atoms.size() -1 ; ++i) { | 
| 375 | 
> | 
            for (int j = i + 1; j < atoms.size(); ++j) { | 
| 376 | 
> | 
                a = atoms[i]->getGlobalIndex(); | 
| 377 | 
> | 
                b = atoms[j]->getGlobalIndex(); | 
| 378 | 
> | 
                exclude_.addPair(a, b); | 
| 379 | 
> | 
            } | 
| 380 | 
> | 
        } | 
| 381 | 
> | 
    }         | 
| 382 | 
> | 
 | 
| 383 | 
> | 
    Molecule::CutoffGroupIterator cgIter; | 
| 384 | 
> | 
    CutoffGroup* cg; | 
| 385 | 
> | 
    for (cg = mol->beginCutoffGroup(cgIter); cg != NULL; cg = mol->nextCutoffGroup(cgIter)) { | 
| 386 | 
> | 
        std::vector<Atom*> atoms = cg->getAtoms(); | 
| 387 | 
> | 
        for (int i = 0; i < atoms.size() -1 ; ++i) { | 
| 388 | 
> | 
            for (int j = i + 1; j < atoms.size(); ++j) { | 
| 389 | 
> | 
                a = atoms[i]->getGlobalIndex(); | 
| 390 | 
> | 
                b = atoms[j]->getGlobalIndex(); | 
| 391 | 
> | 
                exclude_.addPair(a, b); | 
| 392 | 
> | 
            } | 
| 393 | 
> | 
        } | 
| 394 | 
> | 
    }   | 
| 395 | 
> | 
 | 
| 396 | 
  | 
} | 
| 397 | 
  | 
 | 
| 398 | 
  | 
void SimInfo::removeExcludePairs(Molecule* mol) { | 
| 437 | 
  | 
        exclude_.removePair(c, d);         | 
| 438 | 
  | 
    } | 
| 439 | 
  | 
 | 
| 440 | 
+ | 
    Molecule::RigidBodyIterator rbIter; | 
| 441 | 
+ | 
    RigidBody* rb; | 
| 442 | 
+ | 
    for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { | 
| 443 | 
+ | 
        std::vector<Atom*> atoms = rb->getAtoms(); | 
| 444 | 
+ | 
        for (int i = 0; i < atoms.size() -1 ; ++i) { | 
| 445 | 
+ | 
            for (int j = i + 1; j < atoms.size(); ++j) { | 
| 446 | 
+ | 
                a = atoms[i]->getGlobalIndex(); | 
| 447 | 
+ | 
                b = atoms[j]->getGlobalIndex(); | 
| 448 | 
+ | 
                exclude_.removePair(a, b); | 
| 449 | 
+ | 
            } | 
| 450 | 
+ | 
        } | 
| 451 | 
+ | 
    }         | 
| 452 | 
+ | 
 | 
| 453 | 
+ | 
    Molecule::CutoffGroupIterator cgIter; | 
| 454 | 
+ | 
    CutoffGroup* cg; | 
| 455 | 
+ | 
    for (cg = mol->beginCutoffGroup(cgIter); cg != NULL; cg = mol->nextCutoffGroup(cgIter)) { | 
| 456 | 
+ | 
        std::vector<Atom*> atoms = cg->getAtoms(); | 
| 457 | 
+ | 
        for (int i = 0; i < atoms.size() -1 ; ++i) { | 
| 458 | 
+ | 
            for (int j = i + 1; j < atoms.size(); ++j) { | 
| 459 | 
+ | 
                a = atoms[i]->getGlobalIndex(); | 
| 460 | 
+ | 
                b = atoms[j]->getGlobalIndex(); | 
| 461 | 
+ | 
                exclude_.removePair(a, b); | 
| 462 | 
+ | 
            } | 
| 463 | 
+ | 
        } | 
| 464 | 
+ | 
    }   | 
| 465 | 
+ | 
 | 
| 466 | 
  | 
} | 
| 467 | 
  | 
 | 
| 468 | 
  | 
 | 
| 817 | 
  | 
                "\tfor the cutoffRadius.\n"); | 
| 818 | 
  | 
            painCave.isFatal = 0; | 
| 819 | 
  | 
            simError(); | 
| 820 | 
< | 
            rcut_ = 15.0; | 
| 820 | 
> | 
            rcut = 15.0; | 
| 821 | 
  | 
        } else{ | 
| 822 | 
< | 
            rcut_ = simParams_->getRcut(); | 
| 822 | 
> | 
            rcut = simParams_->getRcut(); | 
| 823 | 
  | 
        } | 
| 824 | 
  | 
 | 
| 825 | 
  | 
        if (!simParams_->haveRsw()){ | 
| 829 | 
  | 
                "\t0.95 * cutoffRadius for the switchingRadius\n"); | 
| 830 | 
  | 
            painCave.isFatal = 0; | 
| 831 | 
  | 
            simError(); | 
| 832 | 
< | 
            rsw_ = 0.95 * rcut_; | 
| 832 | 
> | 
            rsw = 0.95 * rcut; | 
| 833 | 
  | 
        } else{ | 
| 834 | 
< | 
            rsw_ = simParams_->getRsw(); | 
| 834 | 
> | 
            rsw = simParams_->getRsw(); | 
| 835 | 
  | 
        } | 
| 836 | 
  | 
 | 
| 837 | 
  | 
    } else { | 
| 839 | 
  | 
        //meta-data file, the maximum cutoff radius calculated from forcefiled will be used | 
| 840 | 
  | 
         | 
| 841 | 
  | 
        if (simParams_->haveRcut()) { | 
| 842 | 
< | 
            rcut_ = simParams_->getRcut(); | 
| 842 | 
> | 
            rcut = simParams_->getRcut(); | 
| 843 | 
  | 
        } else { | 
| 844 | 
  | 
            //set cutoff radius to the maximum cutoff radius based on atom types in the whole system | 
| 845 | 
< | 
            rcut_ = calcMaxCutoffRadius(); | 
| 845 | 
> | 
            rcut = calcMaxCutoffRadius(); | 
| 846 | 
  | 
        } | 
| 847 | 
  | 
 | 
| 848 | 
  | 
        if (simParams_->haveRsw()) { | 
| 849 | 
< | 
            rsw_  = simParams_->getRsw(); | 
| 849 | 
> | 
            rsw  = simParams_->getRsw(); | 
| 850 | 
  | 
        } else { | 
| 851 | 
< | 
            rsw_ = rcut_; | 
| 851 | 
> | 
            rsw = rcut; | 
| 852 | 
  | 
        } | 
| 853 | 
  | 
     | 
| 854 | 
  | 
    } | 
| 887 | 
  | 
} | 
| 888 | 
  | 
 | 
| 889 | 
  | 
void SimInfo::setSnapshotManager(SnapshotManager* sman) { | 
| 890 | 
+ | 
    //if (sman_ == sman_) { | 
| 891 | 
+ | 
    //    return; | 
| 892 | 
+ | 
    //} | 
| 893 | 
+ | 
     | 
| 894 | 
+ | 
    //delete sman_; | 
| 895 | 
  | 
    sman_ = sman; | 
| 896 | 
  | 
 | 
| 897 | 
  | 
    Molecule* mol; |