Skip to content

Commit 19fb5cb

Browse files
committed
Functionality for setting size of ghost atom
1 parent 3fe6f85 commit 19fb5cb

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

avogadro/core/elements.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ static std::vector<std::string> CustomElementSymbols;
2626
static std::vector<std::string> CustomElementNames;
2727

2828
// Match carbon's radii
29-
static double CustomElementCovalentRadius = element_covalent[6];
30-
static double CustomElementVDWRadius = element_VDW[6];
29+
static std::vector<double> CustomElementCovalentRadii;
30+
static std::vector<double> CustomElementVDWRadii;
3131

3232
inline std::string encodeCustomElement(unsigned char atomicNumber)
3333
{
@@ -101,6 +101,8 @@ class InitializeCustomElementTables
101101
{
102102
CustomElementSymbols.resize(CustomElementCount);
103103
CustomElementNames.resize(CustomElementCount);
104+
CustomElementCovalentRadii.resize(CustomElementCount, element_covalent[6]);
105+
CustomElementVDWRadii.resize(CustomElementCount, element_VDW[6]);
104106
std::string suffix;
105107
for (unsigned char i = CustomElementMin; i <= CustomElementMax; ++i) {
106108
suffix = encodeCustomElement(i);
@@ -113,7 +115,19 @@ class InitializeCustomElementTables
113115
} CustomElementTableInitializer;
114116

115117
} // end anon namespace
118+
void Elements::setCustomElementCovalentRadius(unsigned char atomicNumber, double radius)
119+
{
120+
if (isCustomElement(atomicNumber)) {
121+
CustomElementCovalentRadii[atomicNumber - CustomElementMin] = radius;
122+
}
123+
}
116124

125+
void Elements::setCustomElementVDWRadius(unsigned char atomicNumber, double radius)
126+
{
127+
if (isCustomElement(atomicNumber)) {
128+
CustomElementVDWRadii[atomicNumber - CustomElementMin] = radius;
129+
}
130+
}
117131
unsigned char Elements::elementCount()
118132
{
119133
return element_count;
@@ -235,7 +249,7 @@ double Elements::radiusVDW(unsigned char atomicNumber)
235249
if (atomicNumber < element_count)
236250
return element_VDW[atomicNumber];
237251
else if (isCustomElement(atomicNumber))
238-
return CustomElementVDWRadius;
252+
return CustomElementVDWRadii[atomicNumber - CustomElementMin];
239253
else
240254
return element_VDW[0];
241255
}
@@ -245,7 +259,7 @@ double Elements::radiusCovalent(unsigned char atomicNumber)
245259
if (atomicNumber < element_count)
246260
return element_covalent[atomicNumber];
247261
else if (isCustomElement(atomicNumber))
248-
return CustomElementCovalentRadius;
262+
return CustomElementCovalentRadii[atomicNumber - CustomElementMin];
249263
else
250264
return element_covalent[0];
251265
}

0 commit comments

Comments
 (0)