votca 2026-dev
Loading...
Searching...
No Matches
votca::xtp::ChargeResponseFit Class Reference

Parametrization of a charge-response molecule (see ChargeResponse) from the static density response of a DFT ground state. More...

#include <chargeresponsefit.h>

Classes

struct  Result
struct  FitOptions
struct  Inversion

Static Public Member Functions

static Result Fit (const tools::Property &dftoptions, Orbitals &orb, const FitOptions &fit, Logger &log)
static Inversion FindInversion (const QMMolecule &mol, const AOBasis &basis, double tol=1e-4)
static std::vector< Eigen::MatrixXd > WeightMatrices (const std::vector< HirshfeldPartition::AtomicReference > &atoms, const AOBasis &basis, const Vxc_Grid &grid)
static std::vector< Eigen::Matrix3d > AtomicPolarizabilities (const std::vector< HirshfeldPartition::AtomicReference > &atoms, const std::vector< Eigen::Vector3d > &positions, const AOBasis &basis, const Vxc_Grid &grid, const std::array< Eigen::MatrixXd, 3 > &dP_field)
static Result Analyse (const std::vector< Eigen::Vector3d > &positions, const std::vector< Eigen::MatrixXd > &W, const std::vector< Eigen::MatrixXd > &dP_potential, const std::array< Eigen::MatrixXd, 3 > &dipole, const std::array< Eigen::MatrixXd, 3 > &dP_field, const std::vector< Eigen::Matrix3d > &alpha_atoms)

Detailed Description

Parametrization of a charge-response molecule (see ChargeResponse) from the static density response of a DFT ground state.

The perturbations are the Hirshfeld-localized potentials w_k (one per atom; sum_k w_k = 1) and three uniform fields. With the AO matrices W_k of the weights and the first-order density matrices dP of the perturbations (electron potential energy +w_k, resp. +r_c, per unit strength):

Pi_jk = -Tr(W_j dP_k) (dq = -Pi phi) alpha_ac = -Tr(r_a dP_c) (molecular polarizability) alpha^res = alpha - X^T Pi X (X: positions - centre)

The residual polarizability is distributed over the atoms as one tensor scaled by the traces of the Hirshfeld atomic polarizabilities alpha_k,ac = -int w_k (r - R_k)_a drho_c. Fit obtains dP by central finite differences of xtpdft SCFs; the partition integrals and the analysis are separate for testing.

Definition at line 62 of file chargeresponsefit.h.

Member Function Documentation

◆ Analyse()

ChargeResponseFit::Result votca::xtp::ChargeResponseFit::Analyse ( const std::vector< Eigen::Vector3d > & positions,
const std::vector< Eigen::MatrixXd > & W,
const std::vector< Eigen::MatrixXd > & dP_potential,
const std::array< Eigen::MatrixXd, 3 > & dipole,
const std::array< Eigen::MatrixXd, 3 > & dP_field,
const std::vector< Eigen::Matrix3d > & alpha_atoms )
static

Pi, alpha and the residual from the responses: dP_potential[k] to +w_k, dP_field[c] to +r_c, dipole[a] the AO matrices of r_a (any origin; the responses conserve the electron number). Throws if Pi is not positive semidefinite or alpha^res not positive definite.

Definition at line 188 of file chargeresponsefit.cc.

◆ AtomicPolarizabilities()

std::vector< Eigen::Matrix3d > votca::xtp::ChargeResponseFit::AtomicPolarizabilities ( const std::vector< HirshfeldPartition::AtomicReference > & atoms,
const std::vector< Eigen::Vector3d > & positions,
const AOBasis & basis,
const Vxc_Grid & grid,
const std::array< Eigen::MatrixXd, 3 > & dP_field )
static

Hirshfeld atomic polarizabilities alpha_k,ac = -int w_k (r - R_k)_a drho_c(r), with drho_c the density of dP_field[c] (per unit field).

Definition at line 117 of file chargeresponsefit.cc.

◆ FindInversion()

ChargeResponseFit::Inversion votca::xtp::ChargeResponseFit::FindInversion ( const QMMolecule & mol,
const AOBasis & basis,
double tol = 1e-4 )
static

Definition at line 269 of file chargeresponsefit.cc.

◆ Fit()

ChargeResponseFit::Result votca::xtp::ChargeResponseFit::Fit ( const tools::Property & dftoptions,
Orbitals & orb,
const FitOptions & fit,
Logger & log )
static

The fit with xtpdft (dftoptions: a dftpackage tree with name xtp): the ground state of orb (atoms, charge and spin set; closed shell), which orb holds on return, then the first-order densities of all perturbations, analytically or as dP = (P(+step) - P(-step)) / (2 step) from SCFs warm-started from the ground state. The Hirshfeld references are xtpdft's (DFTEngine::HirshfeldReferences).

Definition at line 316 of file chargeresponsefit.cc.

◆ WeightMatrices()

std::vector< Eigen::MatrixXd > votca::xtp::ChargeResponseFit::WeightMatrices ( const std::vector< HirshfeldPartition::AtomicReference > & atoms,
const AOBasis & basis,
const Vxc_Grid & grid )
static

The Hirshfeld weight matrices W_k = int w_k chi chi of all atoms, in one pass over the grid (the same integrals as HirshfeldPartition::BuildWeightMatrix).

Definition at line 59 of file chargeresponsefit.cc.


The documentation for this class was generated from the following files: