occ
Loading...
Searching...
No Matches
occ::dft::DFT Class Reference

#include <dft.h>

Inheritance diagram for occ::dft::DFT:
[legend]
Collaboration diagram for occ::dft::DFT:
[legend]

Public Member Functions

 DFT (const std::string &, const gto::AOBasis &, const occ::numint::GridSettings &={})
const auto & aobasis () const
auto nbf () const
void set_integration_grid (const occ::numint::GridSettings &={})
void set_nlc_grid (const gto::AOBasis &basis, const occ::numint::GridSettings &settings={110, 50, 50, 1e-7, false})
void set_density_fitting_basis (const std::string &density_fitting_basis, double auto_aux_threshold=1e-4)
void set_density_fitting_policy (qm::IntegralEngineDF::Policy policy)
void set_density_fitting_memory_limit (size_t bytes)
void set_coulomb_method (qm::CoulombMethod method)
void set_cosx_exchange (occ::numint::COSXGridLevel level=occ::numint::COSXGridLevel::Grid1)
void set_cosx_grid_schedule (const qm::COSXGridSchedule &s={})
bool advance_scf_grid (double diis_error, bool converged)
 SCF hooks for the COSX grid schedule (see HartreeFock).
bool scf_fock_approximate () const
void set_scf_fock_incremental (bool incremental)
void refresh_scf_fock_correction ()
double incremental_fock_floor () const
double final_energy_correction (const MolecularOrbitals &mo)
double cosx_energy_shift_from (occ::numint::COSXGridLevel other, const MolecularOrbitals &mo)
bool using_cosx () const
bool using_density_fitting () const
qm::HartreeFock::ExchangeOperators exchange_operators () const
 Exact-exchange operators (c_t, omega_t) in the energy.
void set_cosx_settings (const occ::qm::cosx::Settings &settings)
void set_precision (double precision)
double integral_precision () const
DFT with_new_basis (const gto::AOBasis &new_basis) const
 Create a new DFT instance with the same settings but different basis.
double exchange_correlation_energy () const
double exchange_energy_total () const
bool usual_scf_energy () const
void update_scf_energy (occ::core::EnergyComponents &energy) const
qm::FockBuildProperties fock_build_properties () const
bool have_effective_core_potentials () const
int density_derivative () const
bool needs_laplacian () const
 Whether any component depends on the density Laplacian.
double exact_exchange_factor () const
RangeSeparatedParameters range_separated_parameters () const
double nuclear_point_charge_interaction_energy (const PointChargeList &pc) const
auto compute_kinetic_matrix () const
auto compute_overlap_matrix () const
auto compute_overlap_matrix_for_basis (const occ::gto::AOBasis &bs) const
auto compute_nuclear_attraction_matrix () const
auto compute_effective_core_potential_matrix () const
auto compute_point_charge_interaction_matrix (const PointChargeList &point_charges) const
double wolf_point_charge_interaction_energy (const PointChargeList &point_charges, const std::vector< double > &molecular_charges, double alpha, double cutoff) const
auto compute_wolf_interaction_matrix (const PointChargeList &point_charges, const std::vector< double > &molecular_charges, double alpha, double cutoff) const
auto compute_schwarz_ints () const
template<unsigned int order = 1>
auto compute_electronic_multipoles (const MolecularOrbitals &mo, const Vec3 &o={0.0, 0.0, 0.0}) const
template<unsigned int order = 1>
auto compute_nuclear_multipoles (const Vec3 &o={0.0, 0.0, 0.0}) const
template<unsigned int order = 1>
auto compute_multipoles (const MolecularOrbitals &mo, const Vec3 &o={0.0, 0.0, 0.0}) const
template<int derivative_order, SpinorbitalKind spinorbital_kind = SpinorbitalKind::Restricted>
Mat compute_K_dft (const MolecularOrbitals &mo, const Mat &Schwarz)
Mat compute_J (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
Mat compute_vxc (const MolecularOrbitals &mo, const Mat &Schwarz=Mat())
qm::JKPair compute_JK (const MolecularOrbitals &mo, const Mat &Schwarz=Mat())
bool have_nonlocal_correlation () const
double post_scf_nlc_correction (const MolecularOrbitals &mo)
Mat3N compute_nlc_gradient (const MolecularOrbitals &mo) const
Mat compute_fock (const MolecularOrbitals &mo, const Mat &Schwarz=Mat())
MatTriple compute_fock_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat())
std::vector< Mat > compute_xc_response (const MolecularOrbitals &mo, const std::vector< Mat > &D1) const
 XC potential response V1[D1] for each first-order (per-spin) density, the exact derivative of this functional's V_xc at mo.
std::string analytic_hessian_unsupported (SpinorbitalKind kind) const
 Empty if the analytic Hessian supports this calculation, otherwise why not (the caller falls back to finite differences).
Mat compute_one_electron_hessian (const Mat &P, const Mat &Q) const
void compute_one_electron_derivative_matrices (std::vector< Mat > &S1, std::vector< Mat > &H1) const
Mat compute_xc_hessian (const MolecularOrbitals &mo) const
 Skeleton XC Hessian: second derivatives of E_xc at fixed AO density, grid response included (points moving with their atoms, first and second partition-weight derivatives).
Mat two_electron_hessian (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Skeleton two-electron + XC Hessian (fixed density): Coulomb, the functional's exact exchange (global or range-separated) and XC.
std::vector< Mat > two_electron_derivative_fock (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Skeleton two-electron + XC Fock derivatives for every coordinate.
std::vector< Mat > compute_xc_derivative_fock (const MolecularOrbitals &mo) const
 dV_xc/dR for every nuclear coordinate (index 3 * atom + xyz) at the fixed AO density of mo, including the grid response (points moving with their atoms, partition-weight derivatives).
std::vector< Mat > compute_xc_derivative_fock_occ (const MolecularOrbitals &mo) const
 The same contracted with the occupied coefficients, (dV_xc/dR) C_o (nbf x nocc each), on screened basis subsets: what the Hessian uses.
std::vector< Mat > two_electron_derivative_fock_occ (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Skeleton two-electron + XC Fock derivatives contracted with C_o.
std::vector< Mat > nonvariational_fock_derivative_occ (const MolecularOrbitals &mo) const
 The functional's exact exchange part of d/dR (1/2 dE/dD - F) C_o: see HartreeFock::compute_exchange_nonvariational_fock_occ.
std::vector< Mat > compute_response_fock (const MolecularOrbitals &mo, const std::vector< Mat > &D1, const Mat &Schwarz=Mat()) const
 Linear response of the full two-electron Kohn-Sham Fock matrix at mo: Coulomb, the functional's exact exchange (global or range-separated) and the XC kernel.
std::vector< Mat > compute_response_fock_occ (const MolecularOrbitals &mo, const std::vector< Mat > &Cx, const Mat &Schwarz=Mat()) const
 The CPHF response, G[D1] C_o for D1 = Cx C_o^T + C_o Cx^T (see HartreeFock::response_occ): Coulomb and the functional's exact exchange with the SCF's operators, plus the XC kernel, contracted with C_o point by point (O(npt nbf nocc) per density).
std::vector< Mat > compute_response_fock_occ_approx (const MolecularOrbitals &mo, const std::vector< Mat > &Cx, const Mat &Schwarz=Mat()) const
 The approximate response (RI-J, four-centre exchange, XC on a coarse grid) that CPHF preconditions with; always cheaper for DFT.
bool has_approximate_response () const
std::vector< Mat > compute_xc_response_occ (const MolecularOrbitals &mo, const std::vector< Mat > &Cx, const occ::numint::MolecularGrid *grid=nullptr) const
 The XC kernel's part of the CPHF response; grid selects another integration grid (default: the SCF's).
Mat3N two_electron_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Two-electron part of the nuclear gradient: Coulomb plus the functional's exact exchange (global or range-separated), contracted in the integral loop.
const auto & hf () const
const qm::IntegralEngine & integral_engine () const
Mat compute_fock_from_density (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Forwarded to Hartree-Fock: this builds a starting density's Fock matrix, where exact exchange stands in for the functional perfectly well and saves constructing an XC grid before the first real iteration.
Mat compute_fock_mixed_basis (const MolecularOrbitals &mo_bs, const gto::AOBasis &bs, bool is_shell_diagonal)
Vec electronic_electric_potential_contribution (const MolecularOrbitals &mo, const Mat3N &pts) const
Mat3N electronic_electric_field_contribution (const MolecularOrbitals &mo, const Mat3N &pts) const
Mat3N compute_xc_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Calculate the DFT exchange-correlation contribution to the atomic gradient.
Mat3N compute_ecp_gradient (const MolecularOrbitals &mo) const
Mat3N additional_atomic_gradients (const MolecularOrbitals &mo) const
Mat3N nuclear_repulsion_gradient () const
 Calculate the nuclear repulsion contribution to the atomic gradient.
MatTriple compute_overlap_gradient () const
 Calculate gradients for specific DFT components.
MatTriple compute_kinetic_gradient () const
MatTriple compute_nuclear_attraction_gradient () const
MatTriple compute_rinv_gradient_for_atom (size_t atom) const
qm::JKTriple compute_JK_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat())
MatTriple compute_J_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
void update_core_hamiltonian (const MolecularOrbitals &mo, Mat &H)
void set_method (const std::string &method_string)
const std::string & method_string () const
const auto & functionals () const
std::string name () const
void set_block_size (size_t blocksize)
void set_xc_screening_threshold (double t)
 Per-grid-batch shell screening tolerance for the XC build: the |phi| decay cutoff used to drop negligible basis functions over a spatial batch.
double xc_screening_threshold () const
void set_grid_response (bool on)
 Include the grid response in XC gradients (on by default): grid points move with their parent atom, and the Becke partition weights are differentiated.
bool grid_response () const
Public Member Functions inherited from occ::qm::SCFMethodBase
 SCFMethodBase (const std::vector< core::Atom > &)
const auto & atoms () const
int system_charge () const
int total_electrons () const
int active_electrons () const
const auto & frozen_electrons () const
Vec3 center_of_mass () const
void set_system_charge (int charge)
double nuclear_repulsion_energy () const
Mat3N nuclear_repulsion_gradient () const
Vec nuclear_electric_potential_contribution (const Mat3N &) const
Mat3N nuclear_electric_field_contribution (const Mat3N &) const
void set_frozen_electrons (const std::vector< int > &)

Additional Inherited Members

Protected Member Functions inherited from occ::qm::SCFMethodBase
void update_electron_count ()
Protected Attributes inherited from occ::qm::SCFMethodBase
int m_charge {0}
int m_num_electrons {0}
int m_num_frozen {0}
std::vector< occ::core::Atom > m_atoms
std::vector< int > m_frozen_electrons

Constructor & Destructor Documentation

◆ DFT()

occ::dft::DFT::DFT ( const std::string & ,
const gto::AOBasis & ,
const occ::numint::GridSettings & = {} )

Member Function Documentation

◆ additional_atomic_gradients()

Mat3N occ::dft::DFT::additional_atomic_gradients ( const MolecularOrbitals & mo) const
inline

◆ advance_scf_grid()

bool occ::dft::DFT::advance_scf_grid ( double diis_error,
bool converged )
inline

SCF hooks for the COSX grid schedule (see HartreeFock).

◆ analytic_hessian_unsupported()

std::string occ::dft::DFT::analytic_hessian_unsupported ( SpinorbitalKind kind) const
inline

Empty if the analytic Hessian supports this calculation, otherwise why not (the caller falls back to finite differences).

◆ aobasis()

const auto & occ::dft::DFT::aobasis ( ) const
inline

◆ compute_ecp_gradient()

Mat3N occ::dft::DFT::compute_ecp_gradient ( const MolecularOrbitals & mo) const
inline

◆ compute_effective_core_potential_matrix()

auto occ::dft::DFT::compute_effective_core_potential_matrix ( ) const
inline

◆ compute_electronic_multipoles()

template<unsigned int order = 1>
auto occ::dft::DFT::compute_electronic_multipoles ( const MolecularOrbitals & mo,
const Vec3 & o = {0.0, 0.0, 0.0} ) const
inline

◆ compute_fock()

Mat occ::dft::DFT::compute_fock ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() )
inline

◆ compute_fock_from_density()

Mat occ::dft::DFT::compute_fock_from_density ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

Forwarded to Hartree-Fock: this builds a starting density's Fock matrix, where exact exchange stands in for the functional perfectly well and saves constructing an XC grid before the first real iteration.

◆ compute_fock_gradient()

MatTriple occ::dft::DFT::compute_fock_gradient ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() )

◆ compute_fock_mixed_basis()

Mat occ::dft::DFT::compute_fock_mixed_basis ( const MolecularOrbitals & mo_bs,
const gto::AOBasis & bs,
bool is_shell_diagonal )
inline

◆ compute_J()

Mat occ::dft::DFT::compute_J ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

◆ compute_J_gradient()

MatTriple occ::dft::DFT::compute_J_gradient ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

◆ compute_JK()

qm::JKPair occ::dft::DFT::compute_JK ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() )
inline

◆ compute_JK_gradient()

qm::JKTriple occ::dft::DFT::compute_JK_gradient ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() )

◆ compute_K_dft()

template<int derivative_order, SpinorbitalKind spinorbital_kind = SpinorbitalKind::Restricted>
Mat occ::dft::DFT::compute_K_dft ( const MolecularOrbitals & mo,
const Mat & Schwarz )
inline

◆ compute_kinetic_gradient()

MatTriple occ::dft::DFT::compute_kinetic_gradient ( ) const
inline

◆ compute_kinetic_matrix()

auto occ::dft::DFT::compute_kinetic_matrix ( ) const
inline

◆ compute_multipoles()

template<unsigned int order = 1>
auto occ::dft::DFT::compute_multipoles ( const MolecularOrbitals & mo,
const Vec3 & o = {0.0, 0.0, 0.0} ) const
inline

◆ compute_nlc_gradient()

Mat3N occ::dft::DFT::compute_nlc_gradient ( const MolecularOrbitals & mo) const
inline

◆ compute_nuclear_attraction_gradient()

MatTriple occ::dft::DFT::compute_nuclear_attraction_gradient ( ) const
inline

◆ compute_nuclear_attraction_matrix()

auto occ::dft::DFT::compute_nuclear_attraction_matrix ( ) const
inline

◆ compute_nuclear_multipoles()

template<unsigned int order = 1>
auto occ::dft::DFT::compute_nuclear_multipoles ( const Vec3 & o = {0.0, 0.0, 0.0}) const
inline

◆ compute_one_electron_derivative_matrices()

void occ::dft::DFT::compute_one_electron_derivative_matrices ( std::vector< Mat > & S1,
std::vector< Mat > & H1 ) const
inline

◆ compute_one_electron_hessian()

Mat occ::dft::DFT::compute_one_electron_hessian ( const Mat & P,
const Mat & Q ) const
inline

◆ compute_overlap_gradient()

MatTriple occ::dft::DFT::compute_overlap_gradient ( ) const
inline

Calculate gradients for specific DFT components.

◆ compute_overlap_matrix()

auto occ::dft::DFT::compute_overlap_matrix ( ) const
inline

◆ compute_overlap_matrix_for_basis()

auto occ::dft::DFT::compute_overlap_matrix_for_basis ( const occ::gto::AOBasis & bs) const
inline

◆ compute_point_charge_interaction_matrix()

auto occ::dft::DFT::compute_point_charge_interaction_matrix ( const PointChargeList & point_charges) const
inline

◆ compute_response_fock()

std::vector< Mat > occ::dft::DFT::compute_response_fock ( const MolecularOrbitals & mo,
const std::vector< Mat > & D1,
const Mat & Schwarz = Mat() ) const

Linear response of the full two-electron Kohn-Sham Fock matrix at mo: Coulomb, the functional's exact exchange (global or range-separated) and the XC kernel.

The operation a CPKS solver needs.

◆ compute_response_fock_occ()

std::vector< Mat > occ::dft::DFT::compute_response_fock_occ ( const MolecularOrbitals & mo,
const std::vector< Mat > & Cx,
const Mat & Schwarz = Mat() ) const

The CPHF response, G[D1] C_o for D1 = Cx C_o^T + C_o Cx^T (see HartreeFock::response_occ): Coulomb and the functional's exact exchange with the SCF's operators, plus the XC kernel, contracted with C_o point by point (O(npt nbf nocc) per density).

◆ compute_response_fock_occ_approx()

std::vector< Mat > occ::dft::DFT::compute_response_fock_occ_approx ( const MolecularOrbitals & mo,
const std::vector< Mat > & Cx,
const Mat & Schwarz = Mat() ) const

The approximate response (RI-J, four-centre exchange, XC on a coarse grid) that CPHF preconditions with; always cheaper for DFT.

◆ compute_rinv_gradient_for_atom()

MatTriple occ::dft::DFT::compute_rinv_gradient_for_atom ( size_t atom) const
inline

◆ compute_schwarz_ints()

auto occ::dft::DFT::compute_schwarz_ints ( ) const
inline

◆ compute_vxc()

Mat occ::dft::DFT::compute_vxc ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() )
inline

◆ compute_wolf_interaction_matrix()

auto occ::dft::DFT::compute_wolf_interaction_matrix ( const PointChargeList & point_charges,
const std::vector< double > & molecular_charges,
double alpha,
double cutoff ) const
inline

◆ compute_xc_derivative_fock()

std::vector< Mat > occ::dft::DFT::compute_xc_derivative_fock ( const MolecularOrbitals & mo) const

dV_xc/dR for every nuclear coordinate (index 3 * atom + xyz) at the fixed AO density of mo, including the grid response (points moving with their atoms, partition-weight derivatives).

Restricted LDA, GGA and meta-GGA (tau only).

◆ compute_xc_derivative_fock_occ()

std::vector< Mat > occ::dft::DFT::compute_xc_derivative_fock_occ ( const MolecularOrbitals & mo) const

The same contracted with the occupied coefficients, (dV_xc/dR) C_o (nbf x nocc each), on screened basis subsets: what the Hessian uses.

Restricted or unrestricted (layout of cphf::occupied_orbitals).

◆ compute_xc_gradient()

Mat3N occ::dft::DFT::compute_xc_gradient ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const

Calculate the DFT exchange-correlation contribution to the atomic gradient.

Parameters
moMolecular orbitals
Returns
Matrix of gradients with dimensions 3 x natoms

◆ compute_xc_hessian()

Mat occ::dft::DFT::compute_xc_hessian ( const MolecularOrbitals & mo) const

Skeleton XC Hessian: second derivatives of E_xc at fixed AO density, grid response included (points moving with their atoms, first and second partition-weight derivatives).

LDA and GGA, restricted or unrestricted; meta-GGA (tau only) restricted.

◆ compute_xc_response()

std::vector< Mat > occ::dft::DFT::compute_xc_response ( const MolecularOrbitals & mo,
const std::vector< Mat > & D1 ) const

XC potential response V1[D1] for each first-order (per-spin) density, the exact derivative of this functional's V_xc at mo.

Restricted LDA, GGA and meta-GGA (tau only), including hybrids' DFT part.

◆ compute_xc_response_occ()

std::vector< Mat > occ::dft::DFT::compute_xc_response_occ ( const MolecularOrbitals & mo,
const std::vector< Mat > & Cx,
const occ::numint::MolecularGrid * grid = nullptr ) const

The XC kernel's part of the CPHF response; grid selects another integration grid (default: the SCF's).

◆ cosx_energy_shift_from()

double occ::dft::DFT::cosx_energy_shift_from ( occ::numint::COSXGridLevel other,
const MolecularOrbitals & mo )
inline

◆ density_derivative()

int occ::dft::DFT::density_derivative ( ) const

◆ electronic_electric_field_contribution()

Mat3N occ::dft::DFT::electronic_electric_field_contribution ( const MolecularOrbitals & mo,
const Mat3N & pts ) const
inline

◆ electronic_electric_potential_contribution()

Vec occ::dft::DFT::electronic_electric_potential_contribution ( const MolecularOrbitals & mo,
const Mat3N & pts ) const
inline

◆ exact_exchange_factor()

double occ::dft::DFT::exact_exchange_factor ( ) const
inline

◆ exchange_correlation_energy()

double occ::dft::DFT::exchange_correlation_energy ( ) const
inline

◆ exchange_energy_total()

double occ::dft::DFT::exchange_energy_total ( ) const
inline

◆ exchange_operators()

qm::HartreeFock::ExchangeOperators occ::dft::DFT::exchange_operators ( ) const
inline

Exact-exchange operators (c_t, omega_t) in the energy.

◆ final_energy_correction()

double occ::dft::DFT::final_energy_correction ( const MolecularOrbitals & mo)
inline

◆ fock_build_properties()

qm::FockBuildProperties occ::dft::DFT::fock_build_properties ( ) const
inline

◆ functionals()

const auto & occ::dft::DFT::functionals ( ) const
inline

◆ grid_response()

bool occ::dft::DFT::grid_response ( ) const
inline

◆ has_approximate_response()

bool occ::dft::DFT::has_approximate_response ( ) const
inline

◆ have_effective_core_potentials()

bool occ::dft::DFT::have_effective_core_potentials ( ) const
inline

◆ have_nonlocal_correlation()

bool occ::dft::DFT::have_nonlocal_correlation ( ) const
inline

◆ hf()

const auto & occ::dft::DFT::hf ( ) const
inline

◆ incremental_fock_floor()

double occ::dft::DFT::incremental_fock_floor ( ) const
inline

◆ integral_engine()

const qm::IntegralEngine & occ::dft::DFT::integral_engine ( ) const
inline

◆ integral_precision()

double occ::dft::DFT::integral_precision ( ) const
inline

◆ method_string()

const std::string & occ::dft::DFT::method_string ( ) const
inline

◆ name()

std::string occ::dft::DFT::name ( ) const
inline

◆ nbf()

auto occ::dft::DFT::nbf ( ) const
inline

◆ needs_laplacian()

bool occ::dft::DFT::needs_laplacian ( ) const

Whether any component depends on the density Laplacian.

◆ nonvariational_fock_derivative_occ()

std::vector< Mat > occ::dft::DFT::nonvariational_fock_derivative_occ ( const MolecularOrbitals & mo) const
inline

The functional's exact exchange part of d/dR (1/2 dE/dD - F) C_o: see HartreeFock::compute_exchange_nonvariational_fock_occ.

◆ nuclear_point_charge_interaction_energy()

double occ::dft::DFT::nuclear_point_charge_interaction_energy ( const PointChargeList & pc) const
inline

◆ nuclear_repulsion_gradient()

Mat3N occ::dft::DFT::nuclear_repulsion_gradient ( ) const
inline

Calculate the nuclear repulsion contribution to the atomic gradient.

Returns
Matrix of gradients with dimensions 3 x natoms

◆ post_scf_nlc_correction()

double occ::dft::DFT::post_scf_nlc_correction ( const MolecularOrbitals & mo)
inline

◆ range_separated_parameters()

RangeSeparatedParameters occ::dft::DFT::range_separated_parameters ( ) const

◆ refresh_scf_fock_correction()

void occ::dft::DFT::refresh_scf_fock_correction ( )
inline

◆ scf_fock_approximate()

bool occ::dft::DFT::scf_fock_approximate ( ) const
inline

◆ set_block_size()

void occ::dft::DFT::set_block_size ( size_t blocksize)
inline

◆ set_cosx_exchange()

void occ::dft::DFT::set_cosx_exchange ( occ::numint::COSXGridLevel level = occ::numint::COSXGridLevel::Grid1)
inline

◆ set_cosx_grid_schedule()

void occ::dft::DFT::set_cosx_grid_schedule ( const qm::COSXGridSchedule & s = {})
inline

◆ set_cosx_settings()

void occ::dft::DFT::set_cosx_settings ( const occ::qm::cosx::Settings & settings)
inline

◆ set_coulomb_method()

void occ::dft::DFT::set_coulomb_method ( qm::CoulombMethod method)
inline

◆ set_density_fitting_basis()

void occ::dft::DFT::set_density_fitting_basis ( const std::string & density_fitting_basis,
double auto_aux_threshold = 1e-4 )
inline

◆ set_density_fitting_memory_limit()

void occ::dft::DFT::set_density_fitting_memory_limit ( size_t bytes)
inline

◆ set_density_fitting_policy()

void occ::dft::DFT::set_density_fitting_policy ( qm::IntegralEngineDF::Policy policy)
inline

◆ set_grid_response()

void occ::dft::DFT::set_grid_response ( bool on)
inline

Include the grid response in XC gradients (on by default): grid points move with their parent atom, and the Becke partition weights are differentiated.

Without it the gradient is not translationally invariant.

◆ set_integration_grid()

void occ::dft::DFT::set_integration_grid ( const occ::numint::GridSettings & = {})

◆ set_method()

void occ::dft::DFT::set_method ( const std::string & method_string)

◆ set_nlc_grid()

void occ::dft::DFT::set_nlc_grid ( const gto::AOBasis & basis,
const occ::numint::GridSettings & settings = {110, 50, 50, 1e-7, false} )

◆ set_precision()

void occ::dft::DFT::set_precision ( double precision)
inline

◆ set_scf_fock_incremental()

void occ::dft::DFT::set_scf_fock_incremental ( bool incremental)
inline

◆ set_xc_screening_threshold()

void occ::dft::DFT::set_xc_screening_threshold ( double t)
inline

Per-grid-batch shell screening tolerance for the XC build: the |phi| decay cutoff used to drop negligible basis functions over a spatial batch.

Larger = more aggressive screening / faster, less accurate. <=0 disables screening (dense XC build).

◆ two_electron_derivative_fock()

std::vector< Mat > occ::dft::DFT::two_electron_derivative_fock ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const

Skeleton two-electron + XC Fock derivatives for every coordinate.

◆ two_electron_derivative_fock_occ()

std::vector< Mat > occ::dft::DFT::two_electron_derivative_fock_occ ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const

Skeleton two-electron + XC Fock derivatives contracted with C_o.

◆ two_electron_gradient()

Mat3N occ::dft::DFT::two_electron_gradient ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const

Two-electron part of the nuclear gradient: Coulomb plus the functional's exact exchange (global or range-separated), contracted in the integral loop.

3 x natom.

◆ two_electron_hessian()

Mat occ::dft::DFT::two_electron_hessian ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const

Skeleton two-electron + XC Hessian (fixed density): Coulomb, the functional's exact exchange (global or range-separated) and XC.

◆ update_core_hamiltonian()

void occ::dft::DFT::update_core_hamiltonian ( const MolecularOrbitals & mo,
Mat & H )
inline

◆ update_scf_energy()

void occ::dft::DFT::update_scf_energy ( occ::core::EnergyComponents & energy) const
inline

◆ using_cosx()

bool occ::dft::DFT::using_cosx ( ) const
inline

◆ using_density_fitting()

bool occ::dft::DFT::using_density_fitting ( ) const
inline

◆ usual_scf_energy()

bool occ::dft::DFT::usual_scf_energy ( ) const
inline

◆ with_new_basis()

DFT occ::dft::DFT::with_new_basis ( const gto::AOBasis & new_basis) const

Create a new DFT instance with the same settings but different basis.

Parameters
new_basisThe new basis set to use
Returns
New DFT instance

◆ wolf_point_charge_interaction_energy()

double occ::dft::DFT::wolf_point_charge_interaction_energy ( const PointChargeList & point_charges,
const std::vector< double > & molecular_charges,
double alpha,
double cutoff ) const
inline

◆ xc_screening_threshold()

double occ::dft::DFT::xc_screening_threshold ( ) const
inline

The documentation for this class was generated from the following file:
  • /home/runner/work/occ/occ/include/occ/dft/dft.h