48#include "types/UFFAdapter.hpp"
53#include "utils/simError.h"
57 bool UFFAdapter::isUFF() {
return at_->hasProperty(UFFtypeID); }
61 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
62 "UFFAdapter::getUFFParam was passed an atomType (%s)\n"
63 "\tthat does not appear to be a UFF atom.\n",
64 at_->getName().c_str());
65 painCave.severity = OPENMD_ERROR;
70 std::shared_ptr<GenericData> data = at_->getPropertyByName(UFFtypeID);
71 if (data ==
nullptr) {
72 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
73 "UFFAdapter::getUFFParam could not find UFF\n"
74 "\tparameters for atomType %s.\n",
75 at_->getName().c_str());
76 painCave.severity = OPENMD_ERROR;
81 std::shared_ptr<UFFAtypeData> uffData =
82 std::dynamic_pointer_cast<UFFAtypeData>(data);
83 if (uffData == NULL) {
84 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
85 "UFFAdapter::getUFFParam could not convert\n"
86 "\tGenericData to UFFAtypeData for atom type %s\n",
87 at_->getName().c_str());
88 painCave.severity = OPENMD_ERROR;
93 return uffData->getData();
96 RealType UFFAdapter::getR1() {
97 UFFAtypeParameters uffParam = getUFFParam();
101 RealType UFFAdapter::getTheta0() {
102 UFFAtypeParameters uffParam = getUFFParam();
103 return uffParam.theta0;
106 RealType UFFAdapter::getX1() {
107 UFFAtypeParameters uffParam = getUFFParam();
111 RealType UFFAdapter::getD1() {
112 UFFAtypeParameters uffParam = getUFFParam();
116 RealType UFFAdapter::getZeta() {
117 UFFAtypeParameters uffParam = getUFFParam();
118 return uffParam.zeta;
121 RealType UFFAdapter::getZ1() {
122 UFFAtypeParameters uffParam = getUFFParam();
126 RealType UFFAdapter::getVi() {
127 UFFAtypeParameters uffParam = getUFFParam();
131 RealType UFFAdapter::getUj() {
132 UFFAtypeParameters uffParam = getUFFParam();
136 RealType UFFAdapter::getXi() {
137 UFFAtypeParameters uffParam = getUFFParam();
141 RealType UFFAdapter::getHard() {
142 UFFAtypeParameters uffParam = getUFFParam();
143 return uffParam.Hard;
146 RealType UFFAdapter::getRadius() {
147 UFFAtypeParameters uffParam = getUFFParam();
148 return uffParam.Radius;
151 void UFFAdapter::makeUFF(RealType r1, RealType theta0, RealType x1,
152 RealType D1, RealType zeta, RealType Z1, RealType Vi,
153 RealType Uj, RealType Xi, RealType Hard,
155 if (isUFF()) { at_->removeProperty(UFFtypeID); }
157 UFFAtypeParameters uffParam {};
160 uffParam.theta0 = theta0;
163 uffParam.zeta = zeta;
168 uffParam.Hard = Hard;
169 uffParam.Radius = Radius;
170 at_->addProperty(std::make_shared<UFFAtypeData>(UFFtypeID, uffParam));
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.