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