45#include "io/LennardJonesAtomTypesSectionParser.hpp"
48#include "io/ForceFieldOptions.hpp"
49#include "types/LennardJonesAdapter.hpp"
50#include "utils/simError.h"
54 LennardJonesAtomTypesSectionParser::LennardJonesAtomTypesSectionParser(
55 ForceFieldOptions& options) :
57 setSectionName(
"LennardJonesAtomTypes");
60 void LennardJonesAtomTypesSectionParser::parseLine(ForceField& ff,
61 const std::string& line,
63 StringTokenizer tokenizer(line);
64 int nTokens = tokenizer.countTokens();
69 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
70 "LennardJonesAtomTypesSectionParser Error: Not enough tokens at "
76 std::string atomTypeName = tokenizer.nextToken();
77 AtomType* atomType = ff.getAtomType(atomTypeName);
79 if (atomType != NULL) {
80 RealType epsilon = tokenizer.nextTokenAsDouble();
81 RealType sigma = tokenizer.nextTokenAsDouble();
84 epsilon *= options_.getEnergyUnitScaling();
85 sigma *= options_.getDistanceUnitScaling();
87 if (tokenizer.hasMoreTokens()) {
88 std::string pot_type = tokenizer.nextToken();
89 if (pot_type ==
"soft") { isSoft =
true; }
92 LennardJonesAdapter lj = LennardJonesAdapter(atomType);
93 lj.makeLennardJones(sigma, epsilon, isSoft);
97 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
98 "LennardJonesAtomTypesSectionParser Error: Atom Type [%s] is not "
100 atomTypeName.c_str());
101 painCave.isFatal = 1;
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.