| 56 |
|
#include "UseTheForce/notifyCutoffs_interface.h" |
| 57 |
|
#include "utils/MemoryUtils.hpp" |
| 58 |
|
#include "utils/simError.h" |
| 59 |
+ |
#include "selection/SelectionManager.hpp" |
| 60 |
|
|
| 61 |
|
#ifdef IS_MPI |
| 62 |
|
#include "UseTheForce/mpiComponentPlan.h" |
| 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) { |
| 76 |
> |
sman_(NULL), fortranInitialized_(false), selectMan_(NULL) { |
| 77 |
|
|
| 78 |
|
|
| 79 |
|
std::vector<std::pair<MoleculeStamp*, int> >::iterator i; |
| 109 |
|
|
| 110 |
|
//calculate atoms in rigid bodies |
| 111 |
|
int nAtomsInRigidBodies = 0; |
| 112 |
< |
int nRigidBodiesInStamp = molStamp->getNCutoffGroups(); |
| 112 |
> |
int nRigidBodiesInStamp = molStamp->getNRigidBodies(); |
| 113 |
|
|
| 114 |
|
for (int j=0; j < nRigidBodiesInStamp; j++) { |
| 115 |
|
rbStamp = molStamp->getRigidBody(j); |
| 138 |
|
#ifdef IS_MPI |
| 139 |
|
molToProcMap_.resize(nGlobalMols_); |
| 140 |
|
#endif |
| 141 |
< |
|
| 141 |
> |
|
| 142 |
> |
selectMan_ = new SelectionManager(this); |
| 143 |
> |
selectMan_->selectAll(); |
| 144 |
|
} |
| 145 |
|
|
| 146 |
|
SimInfo::~SimInfo() { |
| 147 |
< |
//MemoryUtils::deleteVectorOfPointer(molecules_); |
| 148 |
< |
|
| 149 |
< |
MemoryUtils::deleteVectorOfPointer(moleculeStamps_); |
| 147 |
> |
std::map<int, Molecule*>::iterator i; |
| 148 |
> |
for (i = molecules_.begin(); i != molecules_.end(); ++i) { |
| 149 |
> |
delete i->second; |
| 150 |
> |
} |
| 151 |
> |
molecules_.clear(); |
| 152 |
|
|
| 153 |
+ |
MemoryUtils::deletePointers(moleculeStamps_); |
| 154 |
+ |
|
| 155 |
|
delete sman_; |
| 156 |
|
delete simParams_; |
| 157 |
|
delete forceField_; |
| 158 |
< |
|
| 158 |
> |
delete selectMan_; |
| 159 |
|
} |
| 160 |
|
|
| 161 |
|
int SimInfo::getNGlobalConstraints() { |
| 758 |
|
return maxCutoffRadius; |
| 759 |
|
} |
| 760 |
|
|
| 761 |
< |
void SimInfo::setupCutoff() { |
| 755 |
< |
double rcut_; //cutoff radius |
| 756 |
< |
double rsw_; //switching radius |
| 761 |
> |
void SimInfo::getCutoff(double& rcut, double& rsw) { |
| 762 |
|
|
| 763 |
|
if (fInfo_.SIM_uses_Charges | fInfo_.SIM_uses_Dipoles | fInfo_.SIM_uses_RF) { |
| 764 |
|
|
| 769 |
|
"\tfor the cutoffRadius.\n"); |
| 770 |
|
painCave.isFatal = 0; |
| 771 |
|
simError(); |
| 772 |
< |
rcut_ = 15.0; |
| 772 |
> |
rcut = 15.0; |
| 773 |
|
} else{ |
| 774 |
< |
rcut_ = simParams_->getRcut(); |
| 774 |
> |
rcut = simParams_->getRcut(); |
| 775 |
|
} |
| 776 |
|
|
| 777 |
|
if (!simParams_->haveRsw()){ |
| 781 |
|
"\t0.95 * cutoffRadius for the switchingRadius\n"); |
| 782 |
|
painCave.isFatal = 0; |
| 783 |
|
simError(); |
| 784 |
< |
rsw_ = 0.95 * rcut_; |
| 784 |
> |
rsw = 0.95 * rcut; |
| 785 |
|
} else{ |
| 786 |
< |
rsw_ = simParams_->getRsw(); |
| 786 |
> |
rsw = simParams_->getRsw(); |
| 787 |
|
} |
| 788 |
|
|
| 789 |
|
} else { |
| 791 |
|
//meta-data file, the maximum cutoff radius calculated from forcefiled will be used |
| 792 |
|
|
| 793 |
|
if (simParams_->haveRcut()) { |
| 794 |
< |
rcut_ = simParams_->getRcut(); |
| 794 |
> |
rcut = simParams_->getRcut(); |
| 795 |
|
} else { |
| 796 |
|
//set cutoff radius to the maximum cutoff radius based on atom types in the whole system |
| 797 |
< |
rcut_ = calcMaxCutoffRadius(); |
| 797 |
> |
rcut = calcMaxCutoffRadius(); |
| 798 |
|
} |
| 799 |
|
|
| 800 |
|
if (simParams_->haveRsw()) { |
| 801 |
< |
rsw_ = simParams_->getRsw(); |
| 801 |
> |
rsw = simParams_->getRsw(); |
| 802 |
|
} else { |
| 803 |
< |
rsw_ = rcut_; |
| 803 |
> |
rsw = rcut; |
| 804 |
|
} |
| 805 |
|
|
| 806 |
|
} |
| 807 |
< |
|
| 807 |
> |
} |
| 808 |
> |
|
| 809 |
> |
void SimInfo::setupCutoff() { |
| 810 |
> |
getCutoff(rcut_, rsw_); |
| 811 |
|
double rnblist = rcut_ + 1; // skin of neighbor list |
| 812 |
|
|
| 813 |
|
//Pass these cutoff radius etc. to fortran. This function should be called once and only once |
| 839 |
|
} |
| 840 |
|
|
| 841 |
|
void SimInfo::setSnapshotManager(SnapshotManager* sman) { |
| 842 |
+ |
//if (sman_ == sman_) { |
| 843 |
+ |
// return; |
| 844 |
+ |
//} |
| 845 |
+ |
|
| 846 |
+ |
//delete sman_; |
| 847 |
|
sman_ = sman; |
| 848 |
|
|
| 849 |
|
Molecule* mol; |