31 dftAOoverlap.
Fill(dftbasis);
32 return dftAOoverlap.
Matrix();
41 bool coordinates_agree =
true;
42 for (
Index i = 0; i < atomsAll.
size(); i++) {
43 const QMAtom& dimer = atomsAll[i];
44 const QMAtom* monomer =
nullptr;
46 if (i < atomsA.
size()) {
48 }
else if (i < atomsB.
size() + atomsA.
size()) {
49 monomer = &atomsB[i - atomsA.
size()];
54 "Neither Monomer A nor Monomer B contains "
55 "atom %s on line %u. Hence, this atom is part of a linker.") %
62 if (!monomer->
getPos().isApprox(dimer.
getPos(), 0.001)) {
63 coordinates_agree =
false;
67 throw std::runtime_error(
68 "Atom types do not agree in dimer and monomers\n");
72 if (!coordinates_agree) {
74 <<
"======WARNING=======\n Coordinates of monomer "
75 "and dimer atoms do not agree"
Container to hold Basisfunctions for all atoms.
void Fill(const AOBasis &aobasis) final
const Eigen::MatrixXd & Matrix() const
Eigen::MatrixXd CalculateOverlapMatrix(const Orbitals &orbitalsAB) const
void CheckAtomCoordinates(const Orbitals &orbitalsA, const Orbitals &orbitalsB, const Orbitals &orbitalsAB) const
container for molecular orbitals
const QMMolecule & QMAtoms() const
const AOBasis & getDftBasis() const
const Eigen::Vector3d & getPos() const
const std::string & getElement() const
#define XTP_LOG(level, log)
base class for all analysis tools