diff --git a/avogadro/core/elements.cpp b/avogadro/core/elements.cpp index 002c6d6a3e..07296784d5 100644 --- a/avogadro/core/elements.cpp +++ b/avogadro/core/elements.cpp @@ -26,9 +26,8 @@ static std::vector CustomElementSymbols; static std::vector CustomElementNames; // Match carbon's radii -static double CustomElementCovalentRadius = element_covalent[6]; -static double CustomElementVDWRadius = element_VDW[6]; - +static std::vector CustomElementCovalentRadii; +static std::vector CustomElementVDWRadii; inline std::string encodeCustomElement(unsigned char atomicNumber) { std::string result; @@ -101,6 +100,8 @@ class InitializeCustomElementTables { CustomElementSymbols.resize(CustomElementCount); CustomElementNames.resize(CustomElementCount); + CustomElementCovalentRadii.resize(CustomElementCount, element_covalent[6]); + CustomElementVDWRadii.resize(CustomElementCount, element_VDW[6]); std::string suffix; for (unsigned char i = CustomElementMin; i <= CustomElementMax; ++i) { suffix = encodeCustomElement(i); @@ -111,7 +112,19 @@ class InitializeCustomElementTables } } } CustomElementTableInitializer; +void setCustomElementCovalentRadius(unsigned char atomicNumber, double radius) +{ + if (isCustomElement(atomicNumber)) { + CustomElementCovalentRadii[atomicNumber - CustomElementMin] = radius; + } +} +void setCustomElementVDWRadius(unsigned char atomicNumber, double radius) +{ + if (isCustomElement(atomicNumber)) { + CustomElementVDWRadii[atomicNumber - CustomElementMin] = radius; + } +} } // end anon namespace unsigned char Elements::elementCount() @@ -235,7 +248,7 @@ double Elements::radiusVDW(unsigned char atomicNumber) if (atomicNumber < element_count) return element_VDW[atomicNumber]; else if (isCustomElement(atomicNumber)) - return CustomElementVDWRadius; + return CustomElementVDWRadii[atomicNumber - CustomElementMin]; else return element_VDW[0]; } @@ -245,7 +258,7 @@ double Elements::radiusCovalent(unsigned char atomicNumber) if (atomicNumber < element_count) return element_covalent[atomicNumber]; else if (isCustomElement(atomicNumber)) - return CustomElementCovalentRadius; + return CustomElementCovalentRadii[atomicNumber - CustomElementMin]; else return element_covalent[0]; } diff --git a/avogadro/core/elements.h b/avogadro/core/elements.h index d18cb1bbc0..4c76c02022 100644 --- a/avogadro/core/elements.h +++ b/avogadro/core/elements.h @@ -76,7 +76,8 @@ class AVOGADROCORE_EXPORT Elements /** @return the mass of the element with the supplied @p atomicNumber. */ static double mass(unsigned char atomicNumber); - + static void setCustomElementVDWRadius(unsigned char atomicNumber, double radius); + static void setCustomElementCovalentRadius(unsigned char atomicNumber, double radius); /** * @return the Van der Waals radius of the element with the supplied * @p atomicNumber. diff --git a/tests/qtgui/CMakeLists.txt b/tests/qtgui/CMakeLists.txt index 925b3fb61b..0d5ef0eaf8 100644 --- a/tests/qtgui/CMakeLists.txt +++ b/tests/qtgui/CMakeLists.txt @@ -43,6 +43,7 @@ if(PYTHON_EXECUTABLE AND AVOGADRO_DATA) # InputGeneratorWidget ) endif() +# link_directories(/usr/lib) # Build up the source file names. set(testSrcs "")