48#include "types/LennardJonesAdapter.hpp"
53#include "utils/simError.h"
57 bool LennardJonesAdapter::isLennardJones() {
58 return at_->hasProperty(LJtypeID);
62 if (!isLennardJones()) {
63 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
64 "LennardJonesAdapter::getLJParam was passed an atomType (%s)\n"
65 "\tthat does not appear to be a Lennard-Jones atom.\n",
66 at_->getName().c_str());
67 painCave.severity = OPENMD_ERROR;
72 std::shared_ptr<GenericData> data = at_->getPropertyByName(LJtypeID);
73 if (data ==
nullptr) {
74 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
75 "LennardJonesAdapter::getLJParam could not find Lennard-Jones\n"
76 "\tparameters for atomType %s.\n",
77 at_->getName().c_str());
78 painCave.severity = OPENMD_ERROR;
83 std::shared_ptr<LJAtypeData> ljData =
84 std::dynamic_pointer_cast<LJAtypeData>(data);
85 if (ljData ==
nullptr) {
86 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
87 "LennardJonesAdapter::getLJParam could not convert\n"
88 "\tGenericData to LJAtypeData for atom type %s\n",
89 at_->getName().c_str());
90 painCave.severity = OPENMD_ERROR;
95 return ljData->getData();
98 RealType LennardJonesAdapter::getSigma() {
99 LJAtypeParameters ljParam = getLJParam();
100 return ljParam.sigma;
103 RealType LennardJonesAdapter::getEpsilon() {
104 LJAtypeParameters ljParam = getLJParam();
105 return ljParam.epsilon;
108 bool LennardJonesAdapter::isSoft() {
109 LJAtypeParameters ljParam = getLJParam();
110 return ljParam.isSoft;
113 bool LennardJonesAdapter::has14parameters() {
114 LJAtypeParameters ljParam = getLJParam();
115 return ljParam.has14parameters;
118 RealType LennardJonesAdapter::getSigma14() {
119 LJAtypeParameters ljParam = getLJParam();
120 return ljParam.sigma14;
123 RealType LennardJonesAdapter::getEpsilon14() {
124 LJAtypeParameters ljParam = getLJParam();
125 return ljParam.epsilon14;
128 void LennardJonesAdapter::makeLennardJones(RealType sigma, RealType epsilon,
130 if (isLennardJones()) { at_->removeProperty(LJtypeID); }
132 LJAtypeParameters ljParam {};
133 ljParam.epsilon = epsilon;
134 ljParam.sigma = sigma;
135 ljParam.isSoft = isSoft;
136 ljParam.has14parameters =
false;
138 at_->addProperty(std::make_shared<LJAtypeData>(LJtypeID, ljParam));
140 void LennardJonesAdapter::makeLennardJones(RealType sigma, RealType epsilon,
141 RealType sigma14, RealType epsilon14,
143 if (isLennardJones()) { at_->removeProperty(LJtypeID); }
145 LJAtypeParameters ljParam {};
146 ljParam.epsilon = epsilon;
147 ljParam.sigma = sigma;
148 ljParam.epsilon14 = epsilon14;
149 ljParam.sigma14 = sigma14;
150 ljParam.isSoft = isSoft;
151 ljParam.has14parameters =
true;
153 at_->addProperty(std::make_shared<LJAtypeData>(LJtypeID, ljParam));
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.