21#include <boost/format.hpp> 
   39      key + 
".difference_to_groundstate", 
false);
 
   41      key + 
".gridsize", 
"medium");
 
 
   46                            << 
" threads ===== " << std::flush;
 
   52  basis.
Fill(bs, Atomlist);
 
   63    Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> es;
 
   66        << 
TimeStamp() << 
" Converting to Eigenframe " << std::flush;
 
   72    std::array<Eigen::MatrixXd, 2> DMAT =
 
   75    Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> es_h;
 
   76    es_h.computeDirect(gyro_hole.
gyration);
 
   78        << 
TimeStamp() << 
" Converting to Eigenframe " << std::flush;
 
   84    Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> es_e;
 
   85    es_e.computeDirect(gyro_electron.
gyration);
 
   87        << 
TimeStamp() << 
" Converting to Eigenframe " << std::flush;
 
 
   98  Eigen::Vector3d centroid = Eigen::Vector3d::Zero();
 
   99  Eigen::Matrix3d gyration = Eigen::Matrix3d::Zero();
 
  100  for (
const QMAtom& atom : atoms) {
 
  101    double m = elements.
getMass(atom.getElement());
 
  102    const Eigen::Vector3d& pos = atom.getPos();
 
  105    gyration += m * pos * pos.transpose();
 
  109  gyration -= centroid * centroid.transpose();
 
  114  Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> es;
 
 
  121    const Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d>& es) {
 
  124      << 
"---------------- " << label << 
" ----------------" << std::flush;
 
  126      << (boost::format(
"  Norm               = %1$9.4f ") % (gyro.
mass))
 
  130      << (boost::format(
"  Centroid x         = %1$9.4f Ang") %
 
  134      << (boost::format(
"  Centroid y         = %1$9.4f Ang") %
 
  138      << (boost::format(
"  Centroid y         = %1$9.4f Ang") %
 
  144      << (boost::format(
"  Gyration Tensor xx = %1$9.4f Ang^2") %
 
  148      << (boost::format(
"  Gyration Tensor xy = %1$9.4f Ang^2") %
 
  152      << (boost::format(
"  Gyration Tensor xz = %1$9.4f Ang^2") %
 
  156      << (boost::format(
"  Gyration Tensor yy = %1$9.4f Ang^2") %
 
  160      << (boost::format(
"  Gyration Tensor yz = %1$9.4f Ang^2") %
 
  164      << (boost::format(
"  Gyration Tensor zz = %1$9.4f Ang^2") %
 
  169      << (boost::format(
"  Gyration Tensor D1 = %1$9.4f Ang^2") %
 
  170          (es.eigenvalues()[0] * RA2))
 
  173      << (boost::format(
"  Gyration Tensor D2 = %1$9.4f Ang^2") %
 
  174          (es.eigenvalues()[1] * RA2))
 
  177      << (boost::format(
"  Gyration Tensor D3 = %1$9.4f Ang^2") %
 
  178          (es.eigenvalues()[2] * RA2))
 
  182      << (boost::format(
"  Radius of Gyration = %1$9.4f Ang") %
 
  187      << (boost::format(
"  Tensor EF Axis 1 1 = %1$9.4f ") %
 
  188          es.eigenvectors().col(0).x())
 
  191      << (boost::format(
"  Tensor EF Axis 1 2 = %1$9.4f ") %
 
  192          es.eigenvectors().col(0).y())
 
  195      << (boost::format(
"  Tensor EF Axis 1 3 = %1$9.4f ") %
 
  196          es.eigenvectors().col(0).z())
 
  199      << (boost::format(
"  Tensor EF Axis 2 1 = %1$9.4f ") %
 
  200          es.eigenvectors().col(1).x())
 
  203      << (boost::format(
"  Tensor EF Axis 2 2 = %1$9.4f ") %
 
  204          es.eigenvectors().col(1).y())
 
  207      << (boost::format(
"  Tensor EF Axis 2 3 = %1$9.4f ") %
 
  208          es.eigenvectors().col(1).z())
 
  211      << (boost::format(
"  Tensor EF Axis 3 1 = %1$9.4f ") %
 
  212          es.eigenvectors().col(2).x())
 
  215      << (boost::format(
"  Tensor EF Axis 3 2 = %1$9.4f ") %
 
  216          es.eigenvectors().col(2).y())
 
  219      << (boost::format(
"  Tensor EF Axis 3 3 = %1$9.4f ") %
 
  220          es.eigenvectors().col(2).z())
 
 
Container to hold Basisfunctions for all atoms.
 
void Fill(const BasisSet &bs, const QMMolecule &atoms)
 
void Load(const std::string &name)
 
void AnalyzeGeometry(const QMMolecule &atoms)
 
void ReportAnalysis(std::string label, const Gyrationtensor &gyro, const Eigen::SelfAdjointEigenSolver< Eigen::Matrix3d > &es)
 
void Initialize(tools::Property &options)
 
void AnalyzeDensity(const Orbitals &orbitals)
 
Gyrationtensor IntegrateGyrationTensor(const Eigen::MatrixXd &density_matrix)
 
container for molecular orbitals
 
Eigen::MatrixXd DensityMatrixFull(const QMState &state) const
 
const QMMolecule & QMAtoms() const
 
const std::string & getDFTbasisName() const
 
std::array< Eigen::MatrixXd, 2 > DensityMatrixExcitedState(const QMState &state) const
 
Identifier for QMstates. Strings like S1 are converted into enum +zero indexed int.
 
Timestamp returns the current time as a string Example: cout << TimeStamp()
 
void GridSetup(const std::string &type, const QMMolecule &atoms, const AOBasis &basis)
 
#define XTP_LOG(level, log)
 
Charge transport classes.
 
Provides a means for comparing floating point numbers.