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; |