From 19fb5cba1003ba46700f97da829aa2e5e294422e Mon Sep 17 00:00:00 2001 From: peach280 Date: Sun, 5 Jan 2025 00:00:16 +0530 Subject: [PATCH] Functionality for setting size of ghost atom --- avogadro/core/elements.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/avogadro/core/elements.cpp b/avogadro/core/elements.cpp index 002c6d6a3e..26deb509ae 100644 --- a/avogadro/core/elements.cpp +++ b/avogadro/core/elements.cpp @@ -26,8 +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) { @@ -101,6 +101,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); @@ -113,7 +115,19 @@ class InitializeCustomElementTables } CustomElementTableInitializer; } // end anon namespace +void Elements::setCustomElementCovalentRadius(unsigned char atomicNumber, double radius) +{ + if (isCustomElement(atomicNumber)) { + CustomElementCovalentRadii[atomicNumber - CustomElementMin] = radius; + } +} +void Elements::setCustomElementVDWRadius(unsigned char atomicNumber, double radius) +{ + if (isCustomElement(atomicNumber)) { + CustomElementVDWRadii[atomicNumber - CustomElementMin] = radius; + } +} unsigned char Elements::elementCount() { return element_count; @@ -235,7 +249,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 +259,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]; }