1 // 2 // Copyright (C) 2018-2020 by Greg Landrum 3 // 4 #ifndef EHTTOOLS_H_20181226 5 #define EHTTOOLS_H_20181226 6 /*! \file 7 8 \brief Contains an interface to the YaEHMOP extended Hueckel program. 9 10 \b Note: This interface is experimental and may change from version to 11 version. 12 13 */ 14 15 #include <RDGeneral/export.h> 16 #include <string> 17 #include <memory> 18 19 namespace RDKit { 20 class ROMol; 21 namespace EHTTools { 22 23 struct RDKIT_EHTLIB_EXPORT EHTResults { 24 unsigned int numAtoms; 25 unsigned int numOrbitals; 26 unsigned int numElectrons; 27 std::unique_ptr<double[]> overlapMatrix; 28 std::unique_ptr<double[]> hamiltonianMatrix; 29 std::unique_ptr<double[]> overlapPopulationMatrix; 30 std::unique_ptr<double[]> reducedOverlapPopulationMatrix; 31 std::unique_ptr<double[]> chargeMatrix; 32 std::unique_ptr<double[]> reducedChargeMatrix; 33 std::unique_ptr<double[]> atomicCharges; 34 std::unique_ptr<double[]> orbitalEnergies; 35 double fermiEnergy; 36 double totalEnergy; 37 EHTResults() = default; 38 EHTResults(const EHTResults &) = delete; 39 EHTResults &operator=(const EHTResults &) = delete; 40 }; 41 42 //! Runs an extended Hueckel calculation for a molecule 43 //! The results are returned in the EHTResults structure 44 RDKIT_EHTLIB_EXPORT bool runMol( 45 const ROMol &mol, EHTResults &results, int confId = -1, 46 bool preserveHamiltonianAndOverlapMatrices = false); 47 48 } // namespace EHTTools 49 } // namespace RDKit 50 #endif 51