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