--- branches/development/src/io/NonBondedInteractionsSectionParser.cpp 2010/09/15 19:32:10 1501 +++ branches/development/src/io/NonBondedInteractionsSectionParser.cpp 2012/05/26 18:13:43 1725 @@ -36,16 +36,17 @@ * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). - * [4] Vardeman & Gezelter, in progress (2009). + * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). + * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). */ #include "io/NonBondedInteractionsSectionParser.hpp" #include "types/AtomType.hpp" -#include "types/ShiftedMorseInteractionType.hpp" +#include "types/MorseInteractionType.hpp" #include "types/MAWInteractionType.hpp" #include "types/LennardJonesInteractionType.hpp" -#include "types/RepulsiveMorseInteractionType.hpp" -#include "UseTheForce/ForceField.hpp" +#include "types/RepulsivePowerInteractionType.hpp" +#include "brains/ForceField.hpp" #include "utils/simError.h" namespace OpenMD { @@ -53,9 +54,10 @@ namespace OpenMD { setSectionName("NonBondedInteractions"); stringToEnumMap_["MAW"] = MAW; - stringToEnumMap_["ShiftedMorse"] = ShiftedMorse; + stringToEnumMap_["ShiftedMorse"] = ShiftedMorse; stringToEnumMap_["LennardJones"] = LennardJones; stringToEnumMap_["RepulsiveMorse"] = RepulsiveMorse; + stringToEnumMap_["RepulsivePower"] = RepulsivePower; } @@ -107,7 +109,7 @@ namespace OpenMD { RealType r0 = tokenizer.nextTokenAsDouble(); RealType D0 = tokenizer.nextTokenAsDouble(); RealType beta0 = tokenizer.nextTokenAsDouble(); - interactionType = new ShiftedMorseInteractionType(D0, beta0, r0); + interactionType = new MorseInteractionType(D0, beta0, r0, mtShifted); } break; @@ -121,7 +123,7 @@ namespace OpenMD { RealType r0 = tokenizer.nextTokenAsDouble(); RealType D0 = tokenizer.nextTokenAsDouble(); RealType beta0 = tokenizer.nextTokenAsDouble(); - interactionType = new RepulsiveMorseInteractionType(D0, beta0, r0); + interactionType = new MorseInteractionType(D0, beta0, r0, mtRepulsive); } break; @@ -137,6 +139,20 @@ namespace OpenMD { interactionType = new LennardJonesInteractionType(sigma, epsilon); } break; + + case RepulsivePower : + if (nTokens < 3) { + sprintf(painCave.errMsg, "NonBondedInteractionsSectionParser Error: Not enough tokens at line %d\n", + lineNo); + painCave.isFatal = 1; + simError(); + } else { + RealType sigma = tokenizer.nextTokenAsDouble(); + RealType epsilon = tokenizer.nextTokenAsDouble(); + int nRep = tokenizer.nextTokenAsInt(); + interactionType = new RepulsivePowerInteractionType(sigma, epsilon, nRep); + } + break; case Unknown : default: