@@ -26,9 +26,8 @@ static std::vector<std::string> CustomElementSymbols;
26
26
static std::vector<std::string> CustomElementNames;
27
27
28
28
// Match carbon's radii
29
- static double CustomElementCovalentRadius = element_covalent[6 ];
30
- static double CustomElementVDWRadius = element_VDW[6 ];
31
-
29
+ static std::vector<double > CustomElementCovalentRadii;
30
+ static std::vector<double > CustomElementVDWRadii;
32
31
inline std::string encodeCustomElement (unsigned char atomicNumber)
33
32
{
34
33
std::string result;
@@ -101,6 +100,8 @@ class InitializeCustomElementTables
101
100
{
102
101
CustomElementSymbols.resize (CustomElementCount);
103
102
CustomElementNames.resize (CustomElementCount);
103
+ CustomElementCovalentRadii.resize (CustomElementCount, element_covalent[6 ]);
104
+ CustomElementVDWRadii.resize (CustomElementCount, element_VDW[6 ]);
104
105
std::string suffix;
105
106
for (unsigned char i = CustomElementMin; i <= CustomElementMax; ++i) {
106
107
suffix = encodeCustomElement (i);
@@ -111,7 +112,19 @@ class InitializeCustomElementTables
111
112
}
112
113
}
113
114
} CustomElementTableInitializer;
115
+ void setCustomElementCovalentRadius (unsigned char atomicNumber, double radius)
116
+ {
117
+ if (isCustomElement (atomicNumber)) {
118
+ CustomElementCovalentRadii[atomicNumber - CustomElementMin] = radius;
119
+ }
120
+ }
114
121
122
+ void setCustomElementVDWRadius (unsigned char atomicNumber, double radius)
123
+ {
124
+ if (isCustomElement (atomicNumber)) {
125
+ CustomElementVDWRadii[atomicNumber - CustomElementMin] = radius;
126
+ }
127
+ }
115
128
} // end anon namespace
116
129
117
130
unsigned char Elements::elementCount ()
@@ -235,7 +248,7 @@ double Elements::radiusVDW(unsigned char atomicNumber)
235
248
if (atomicNumber < element_count)
236
249
return element_VDW[atomicNumber];
237
250
else if (isCustomElement (atomicNumber))
238
- return CustomElementVDWRadius ;
251
+ return CustomElementVDWRadii[atomicNumber - CustomElementMin] ;
239
252
else
240
253
return element_VDW[0 ];
241
254
}
@@ -245,7 +258,7 @@ double Elements::radiusCovalent(unsigned char atomicNumber)
245
258
if (atomicNumber < element_count)
246
259
return element_covalent[atomicNumber];
247
260
else if (isCustomElement (atomicNumber))
248
- return CustomElementCovalentRadius ;
261
+ return CustomElementCovalentRadii[atomicNumber - CustomElementMin] ;
249
262
else
250
263
return element_covalent[0 ];
251
264
}
0 commit comments