| 50 |  | #include "UseTheForce/ForceField.hpp" | 
| 51 |  | #include "utils/simError.h" | 
| 52 |  | #include "UseTheForce/DarkSide/atype_interface.h" | 
| 53 | + | #include "UseTheForce/DarkSide/fForceOptions_interface.h" | 
| 54 | + | #include "UseTheForce/DarkSide/switcheroo_interface.h" | 
| 55 |  | namespace oopse { | 
| 56 |  |  | 
| 57 |  | ForceField::ForceField() { | 
| 69 |  |  | 
| 70 |  | ForceField::~ForceField() { | 
| 71 |  | deleteAtypes(); | 
| 72 | + | deleteSwitch(); | 
| 73 |  | } | 
| 74 |  |  | 
| 75 |  | AtomType* ForceField::getAtomType(const std::string &at) { | 
| 131 |  |  | 
| 132 |  | } | 
| 133 |  |  | 
| 134 | + | NonBondedInteractionType* ForceField::getNonBondedInteractionType(const std::string &at1, const std::string &at2) { | 
| 135 | + | std::vector<std::string> keys; | 
| 136 | + | keys.push_back(at1); | 
| 137 | + | keys.push_back(at2); | 
| 138 | + |  | 
| 139 | + | //try exact match first | 
| 140 | + | NonBondedInteractionType* nbiType = nonBondedInteractionTypeCont_.find(keys); | 
| 141 | + | if (nbiType) { | 
| 142 | + | return nbiType; | 
| 143 | + | } else { | 
| 144 | + | //if no exact match found, try wild card match | 
| 145 | + | return nonBondedInteractionTypeCont_.find(keys, wildCardAtomTypeName_); | 
| 146 | + | } | 
| 147 | + |  | 
| 148 | + | } | 
| 149 | + |  | 
| 150 |  | BondType* ForceField::getExactBondType(const std::string &at1, const std::string &at2){ | 
| 151 |  | std::vector<std::string> keys; | 
| 152 |  | keys.push_back(at1); | 
| 172 |  | keys.push_back(at4); | 
| 173 |  | return torsionTypeCont_.find(keys); | 
| 174 |  | } | 
| 175 | + |  | 
| 176 | + | NonBondedInteractionType* ForceField::getExactNonBondedInteractionType(const std::string &at1, const std::string &at2){ | 
| 177 | + | std::vector<std::string> keys; | 
| 178 | + | keys.push_back(at1); | 
| 179 | + | keys.push_back(at2); | 
| 180 | + | return nonBondedInteractionTypeCont_.find(keys); | 
| 181 | + | } | 
| 182 | + |  | 
| 183 | + |  | 
| 184 |  | bool ForceField::addAtomType(const std::string &at, AtomType* atomType) { | 
| 185 |  | std::vector<std::string> keys; | 
| 186 |  | keys.push_back(at); | 
| 214 |  | return torsionTypeCont_.add(keys, torsionType); | 
| 215 |  | } | 
| 216 |  |  | 
| 217 | < | double ForceField::getRcutFromAtomType(AtomType* at) { | 
| 217 | > | bool ForceField::addNonBondedInteractionType(const std::string &at1, const std::string &at2, NonBondedInteractionType* nbiType) { | 
| 218 | > | std::vector<std::string> keys; | 
| 219 | > | keys.push_back(at1); | 
| 220 | > | keys.push_back(at2); | 
| 221 | > | return nonBondedInteractionTypeCont_.add(keys, nbiType); | 
| 222 | > |  | 
| 223 | > | } | 
| 224 | > |  | 
| 225 | > | RealType ForceField::getRcutFromAtomType(AtomType* at) { | 
| 226 |  | /**@todo */ | 
| 227 |  | GenericData* data; | 
| 228 | < | double rcut = 0.0; | 
| 228 | > | RealType rcut = 0.0; | 
| 229 |  |  | 
| 230 |  | if (at->isLennardJones()) { | 
| 231 |  | data = at->getPropertyByName("LennardJones"); | 
| 288 |  |  | 
| 289 |  | } | 
| 290 |  |  | 
| 291 | + | void ForceField::setFortranForceOptions(){ | 
| 292 | + | ForceOptions theseFortranOptions; | 
| 293 | + | forceFieldOptions_.makeFortranOptions(theseFortranOptions); | 
| 294 | + | setfForceOptions(&theseFortranOptions); | 
| 295 | + | } | 
| 296 |  | } //end namespace oopse |