48#include "types/StickyAdapter.hpp"
53#include "utils/simError.h"
57 bool StickyAdapter::isSticky() {
return at_->hasProperty(StickyTypeID); }
61 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
62 "StickyAdapter::getStickyParam was passed an atomType (%s)\n"
63 "\tthat does not appear to be a Sticky atom.\n",
64 at_->getName().c_str());
65 painCave.severity = OPENMD_ERROR;
70 std::shared_ptr<GenericData> data = at_->getPropertyByName(StickyTypeID);
71 if (data ==
nullptr) {
72 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
73 "StickyAdapter::getStickyParam could not find Sticky\n"
74 "\tparameters for atomType %s.\n",
75 at_->getName().c_str());
76 painCave.severity = OPENMD_ERROR;
81 std::shared_ptr<StickyAtypeData> stickyData =
82 std::dynamic_pointer_cast<StickyAtypeData>(data);
83 if (stickyData ==
nullptr) {
84 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
85 "StickyAdapter::getStickyParam could not convert\n"
86 "\tGenericData to StickyAtypeData for atom type %s\n",
87 at_->getName().c_str());
88 painCave.severity = OPENMD_ERROR;
93 return stickyData->getData();
96 bool StickyAdapter::isStickyPower() {
98 StickyAtypeParameters stickyParam = getStickyParam();
99 return stickyParam.isPower;
104 RealType StickyAdapter::getW0() {
105 StickyAtypeParameters stickyParam = getStickyParam();
106 return stickyParam.w0;
109 RealType StickyAdapter::getV0() {
110 StickyAtypeParameters stickyParam = getStickyParam();
111 return stickyParam.v0;
114 RealType StickyAdapter::getV0p() {
115 StickyAtypeParameters stickyParam = getStickyParam();
116 return stickyParam.v0p;
119 RealType StickyAdapter::getRl() {
120 StickyAtypeParameters stickyParam = getStickyParam();
121 return stickyParam.rl;
124 RealType StickyAdapter::getRu() {
125 StickyAtypeParameters stickyParam = getStickyParam();
126 return stickyParam.ru;
129 RealType StickyAdapter::getRlp() {
130 StickyAtypeParameters stickyParam = getStickyParam();
131 return stickyParam.rlp;
134 RealType StickyAdapter::getRup() {
135 StickyAtypeParameters stickyParam = getStickyParam();
136 return stickyParam.rup;
139 void StickyAdapter::makeSticky(RealType w0, RealType v0, RealType v0p,
140 RealType rl, RealType ru, RealType rlp,
141 RealType rup,
bool isPower) {
142 if (isSticky()) { at_->removeProperty(StickyTypeID); }
144 StickyAtypeParameters stickyParam {};
147 stickyParam.v0p = v0p;
150 stickyParam.rlp = rlp;
151 stickyParam.rup = rup;
152 stickyParam.isPower = isPower;
155 std::make_shared<StickyAtypeData>(StickyTypeID, stickyParam));
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.