occ
Loading...
Searching...
No Matches
occ::solvent::SolvationCorrectedProcedure< Proc > Class Template Reference

#include <solvation_correction.h>

Public Member Functions

 SolvationCorrectedProcedure (Proc &proc, const std::string &solvent="water", bool radii_scaling=false)
 SolvationCorrectedProcedure (Proc &proc, const occ::scrf::Options &opts)
 Drive the reaction field from an explicit engine configuration rather than the SMD tables — see the matching ContinuumSolvationModel ctor.
SolvationCorrectedProcedure with_new_basis (const occ::gto::AOBasis &basis) const
 The same solvated method on another basis (another geometry), owning its procedure: what finite-difference Hessians displace.
occ::qm::FockBuildProperties fock_build_properties () const
bool advance_scf_grid (double diis_error, bool converged)
bool scf_fock_approximate () const
void refresh_scf_fock_correction ()
void set_scf_fock_incremental (bool incremental)
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 have_effective_core_potentials () const
const auto & atoms () const
const auto & aobasis () const
auto nbf () const
Vec3 center_of_mass () const
void set_system_charge (int charge)
void set_precision (double precision)
int system_charge () const
int total_electrons () const
int active_electrons () const
const auto & frozen_electrons () const
bool usual_scf_energy () const
double nuclear_repulsion_energy () const
double nuclear_point_charge_interaction_energy (const PointChargeList &pc) const
void update_scf_energy (occ::core::EnergyComponents &energy) 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_schwarz_ints () const
auto compute_point_charge_interaction_matrix (const PointChargeList &pc)
void update_core_hamiltonian (const MolecularOrbitals &mo, occ::Mat &H)
Mat compute_fock (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
Mat compute_fock_from_density (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
Mat compute_fock_mixed_basis (const MolecularOrbitals &mo_bs, const qm::AOBasis &bs, bool is_shell_diagonal)
void set_solvent (const std::string &solvent)
void write_surface_file (const std::string &filename)
auto surface_positions_coulomb () const
auto surface_positions_cds () const
auto surface_areas_coulomb () const
auto surface_areas_cds () const
auto surface_cds_energy_elements () const
auto surface_polarization_energy_elements () const
occ::scrf::SolvationSurfaces solvation_surfaces () const
 Per-element decomposition in the unified occ::scrf::SolvationSurfaces shape (same one consumed by cg, same one produced by the xTB pipeline).
const occ::scrf::ReactionFieldEngine & engine () const
template<unsigned int order = 1>
auto compute_electronic_multipole_matrices (const Vec3 &o={0.0, 0.0, 0.0}) 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
Mat3N nuclear_repulsion_gradient () const
auto compute_overlap_gradient () const
auto compute_kinetic_gradient () const
auto compute_nuclear_attraction_gradient () const
auto compute_rinv_gradient_for_atom (size_t atom) const
Mat3N two_electron_gradient (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
Mat3N compute_ecp_gradient (const MolecularOrbitals &mo) const
Mat3N additional_atomic_gradients (const MolecularOrbitals &mo) const
Mat3N solvation_gradient (const MolecularOrbitals &mo) const
 Nuclear gradient of ½ σ·φ + E_cds at the density of mo (3 x natom).
std::vector< Mat > solvation_response (const std::vector< Mat > &P1) const
 Reaction-field response −Σ_k σ1_k[P1] L^k for first-order total densities P1 (symmetric).
Mat solvation_hessian (const Mat &P) const
 Fixed-density second derivatives of ½ σ·φ + E_cds (3N x 3N) at total density P.
std::vector< Mat > solvation_derivative_fock (const Mat &P) const
 Fixed-density derivative of the reaction-field Fock matrix for every nuclear coordinate (3N matrices), −Σ σ_k ∂L^k/∂x − Σ ∂σ_k/∂x L^k.
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 (see occ::qm::cphf::ResponseFunction).
std::vector< Mat > compute_response_fock_occ_approx (const MolecularOrbitals &mo, const std::vector< Mat > &Cx, const Mat &Schwarz=Mat()) const
bool has_approximate_response () const
std::vector< Mat > nonvariational_fock_derivative_occ (const MolecularOrbitals &mo) const
 The reaction field is variational, so only the wrapped method's non-variational exchange correction applies.
std::string analytic_hessian_unsupported (SpinorbitalKind kind) const
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 two_electron_hessian (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
 Skeleton Hessian of the wrapped method plus the solvation terms, which depend on the density.
std::vector< Mat > two_electron_derivative_fock_occ (const MolecularOrbitals &mo, const Mat &Schwarz=Mat()) const
std::string name () const

Constructor & Destructor Documentation

◆ SolvationCorrectedProcedure() [1/2]

template<typename Proc>
occ::solvent::SolvationCorrectedProcedure< Proc >::SolvationCorrectedProcedure ( Proc & proc,
const std::string & solvent = "water",
bool radii_scaling = false )
inline

◆ SolvationCorrectedProcedure() [2/2]

template<typename Proc>
occ::solvent::SolvationCorrectedProcedure< Proc >::SolvationCorrectedProcedure ( Proc & proc,
const occ::scrf::Options & opts )
inline

Drive the reaction field from an explicit engine configuration rather than the SMD tables — see the matching ContinuumSolvationModel ctor.

Member Function Documentation

◆ active_electrons()

template<typename Proc>
int occ::solvent::SolvationCorrectedProcedure< Proc >::active_electrons ( ) const
inline

◆ additional_atomic_gradients()

template<typename Proc>
Mat3N occ::solvent::SolvationCorrectedProcedure< Proc >::additional_atomic_gradients ( const MolecularOrbitals & mo) const
inline

◆ advance_scf_grid()

template<typename Proc>
bool occ::solvent::SolvationCorrectedProcedure< Proc >::advance_scf_grid ( double diis_error,
bool converged )
inline

◆ analytic_hessian_unsupported()

template<typename Proc>
std::string occ::solvent::SolvationCorrectedProcedure< Proc >::analytic_hessian_unsupported ( SpinorbitalKind kind) const
inline

◆ aobasis()

template<typename Proc>
const auto & occ::solvent::SolvationCorrectedProcedure< Proc >::aobasis ( ) const
inline

◆ atoms()

template<typename Proc>
const auto & occ::solvent::SolvationCorrectedProcedure< Proc >::atoms ( ) const
inline

◆ center_of_mass()

template<typename Proc>
Vec3 occ::solvent::SolvationCorrectedProcedure< Proc >::center_of_mass ( ) const
inline

◆ compute_ecp_gradient()

template<typename Proc>
Mat3N occ::solvent::SolvationCorrectedProcedure< Proc >::compute_ecp_gradient ( const MolecularOrbitals & mo) const
inline

◆ compute_effective_core_potential_matrix()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_effective_core_potential_matrix ( ) const
inline

◆ compute_electronic_multipole_matrices()

template<typename Proc>
template<unsigned int order = 1>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_electronic_multipole_matrices ( const Vec3 & o = {0.0, 0.0, 0.0}) const
inline

◆ compute_electronic_multipoles()

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

◆ compute_fock()

template<typename Proc>
Mat occ::solvent::SolvationCorrectedProcedure< Proc >::compute_fock ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

◆ compute_fock_from_density()

template<typename Proc>
Mat occ::solvent::SolvationCorrectedProcedure< Proc >::compute_fock_from_density ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

◆ compute_fock_mixed_basis()

template<typename Proc>
Mat occ::solvent::SolvationCorrectedProcedure< Proc >::compute_fock_mixed_basis ( const MolecularOrbitals & mo_bs,
const qm::AOBasis & bs,
bool is_shell_diagonal )
inline

◆ compute_kinetic_gradient()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_kinetic_gradient ( ) const
inline

◆ compute_kinetic_matrix()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_kinetic_matrix ( ) const
inline

◆ compute_nuclear_attraction_gradient()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_nuclear_attraction_gradient ( ) const
inline

◆ compute_nuclear_attraction_matrix()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_nuclear_attraction_matrix ( ) const
inline

◆ compute_nuclear_multipoles()

template<typename Proc>
template<unsigned int order = 1>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_nuclear_multipoles ( const Vec3 & o = {0.0, 0.0, 0.0}) const
inline

◆ compute_one_electron_derivative_matrices()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::compute_one_electron_derivative_matrices ( std::vector< Mat > & S1,
std::vector< Mat > & H1 ) const
inline

◆ compute_one_electron_hessian()

template<typename Proc>
Mat occ::solvent::SolvationCorrectedProcedure< Proc >::compute_one_electron_hessian ( const Mat & P,
const Mat & Q ) const
inline

◆ compute_overlap_gradient()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_overlap_gradient ( ) const
inline

◆ compute_overlap_matrix()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_overlap_matrix ( ) const
inline

◆ compute_overlap_matrix_for_basis()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_overlap_matrix_for_basis ( const occ::gto::AOBasis & bs) const
inline

◆ compute_point_charge_interaction_matrix()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_point_charge_interaction_matrix ( const PointChargeList & pc)
inline

◆ compute_response_fock_occ()

template<typename Proc>
std::vector< Mat > occ::solvent::SolvationCorrectedProcedure< Proc >::compute_response_fock_occ ( const MolecularOrbitals & mo,
const std::vector< Mat > & Cx,
const Mat & Schwarz = Mat() ) const
inline

The CPHF response G[D1] C_o (see occ::qm::cphf::ResponseFunction).

◆ compute_response_fock_occ_approx()

template<typename Proc>
std::vector< Mat > occ::solvent::SolvationCorrectedProcedure< Proc >::compute_response_fock_occ_approx ( const MolecularOrbitals & mo,
const std::vector< Mat > & Cx,
const Mat & Schwarz = Mat() ) const
inline

◆ compute_rinv_gradient_for_atom()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_rinv_gradient_for_atom ( size_t atom) const
inline

◆ compute_schwarz_ints()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::compute_schwarz_ints ( ) const
inline

◆ cosx_energy_shift_from()

template<typename Proc>
double occ::solvent::SolvationCorrectedProcedure< Proc >::cosx_energy_shift_from ( occ::numint::COSXGridLevel other,
const MolecularOrbitals & mo )
inline

◆ engine()

template<typename Proc>
const occ::scrf::ReactionFieldEngine & occ::solvent::SolvationCorrectedProcedure< Proc >::engine ( ) const
inline

◆ final_energy_correction()

template<typename Proc>
double occ::solvent::SolvationCorrectedProcedure< Proc >::final_energy_correction ( const MolecularOrbitals & mo)
inline

◆ fock_build_properties()

template<typename Proc>
occ::qm::FockBuildProperties occ::solvent::SolvationCorrectedProcedure< Proc >::fock_build_properties ( ) const
inline

◆ frozen_electrons()

template<typename Proc>
const auto & occ::solvent::SolvationCorrectedProcedure< Proc >::frozen_electrons ( ) const
inline

◆ has_approximate_response()

template<typename Proc>
bool occ::solvent::SolvationCorrectedProcedure< Proc >::has_approximate_response ( ) const
inline

◆ have_effective_core_potentials()

template<typename Proc>
bool occ::solvent::SolvationCorrectedProcedure< Proc >::have_effective_core_potentials ( ) const
inline

◆ incremental_fock_floor()

template<typename Proc>
double occ::solvent::SolvationCorrectedProcedure< Proc >::incremental_fock_floor ( ) const
inline

◆ name()

template<typename Proc>
std::string occ::solvent::SolvationCorrectedProcedure< Proc >::name ( ) const
inline

◆ nbf()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::nbf ( ) const
inline

◆ nonvariational_fock_derivative_occ()

template<typename Proc>
std::vector< Mat > occ::solvent::SolvationCorrectedProcedure< Proc >::nonvariational_fock_derivative_occ ( const MolecularOrbitals & mo) const
inline

The reaction field is variational, so only the wrapped method's non-variational exchange correction applies.

◆ nuclear_point_charge_interaction_energy()

template<typename Proc>
double occ::solvent::SolvationCorrectedProcedure< Proc >::nuclear_point_charge_interaction_energy ( const PointChargeList & pc) const
inline

◆ nuclear_repulsion_energy()

template<typename Proc>
double occ::solvent::SolvationCorrectedProcedure< Proc >::nuclear_repulsion_energy ( ) const
inline

◆ nuclear_repulsion_gradient()

template<typename Proc>
Mat3N occ::solvent::SolvationCorrectedProcedure< Proc >::nuclear_repulsion_gradient ( ) const
inline

◆ refresh_scf_fock_correction()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::refresh_scf_fock_correction ( )
inline

◆ scf_fock_approximate()

template<typename Proc>
bool occ::solvent::SolvationCorrectedProcedure< Proc >::scf_fock_approximate ( ) const
inline

◆ set_precision()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::set_precision ( double precision)
inline

◆ set_scf_fock_incremental()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::set_scf_fock_incremental ( bool incremental)
inline

◆ set_solvent()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::set_solvent ( const std::string & solvent)
inline

◆ set_system_charge()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::set_system_charge ( int charge)
inline

◆ solvation_derivative_fock()

template<typename Proc>
std::vector< Mat > occ::solvent::SolvationCorrectedProcedure< Proc >::solvation_derivative_fock ( const Mat & P) const
inline

Fixed-density derivative of the reaction-field Fock matrix for every nuclear coordinate (3N matrices), −Σ σ_k ∂L^k/∂x − Σ ∂σ_k/∂x L^k.

◆ solvation_gradient()

template<typename Proc>
Mat3N occ::solvent::SolvationCorrectedProcedure< Proc >::solvation_gradient ( const MolecularOrbitals & mo) const
inline

Nuclear gradient of ½ σ·φ + E_cds at the density of mo (3 x natom).

◆ solvation_hessian()

template<typename Proc>
Mat occ::solvent::SolvationCorrectedProcedure< Proc >::solvation_hessian ( const Mat & P) const
inline

Fixed-density second derivatives of ½ σ·φ + E_cds (3N x 3N) at total density P.

◆ solvation_response()

template<typename Proc>
std::vector< Mat > occ::solvent::SolvationCorrectedProcedure< Proc >::solvation_response ( const std::vector< Mat > & P1) const
inline

Reaction-field response −Σ_k σ1_k[P1] L^k for first-order total densities P1 (symmetric).

◆ solvation_surfaces()

template<typename Proc>
occ::scrf::SolvationSurfaces occ::solvent::SolvationCorrectedProcedure< Proc >::solvation_surfaces ( ) const
inline

Per-element decomposition in the unified occ::scrf::SolvationSurfaces shape (same one consumed by cg, same one produced by the xTB pipeline).

◆ surface_areas_cds()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::surface_areas_cds ( ) const
inline

◆ surface_areas_coulomb()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::surface_areas_coulomb ( ) const
inline

◆ surface_cds_energy_elements()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::surface_cds_energy_elements ( ) const
inline

◆ surface_polarization_energy_elements()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::surface_polarization_energy_elements ( ) const
inline

◆ surface_positions_cds()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::surface_positions_cds ( ) const
inline

◆ surface_positions_coulomb()

template<typename Proc>
auto occ::solvent::SolvationCorrectedProcedure< Proc >::surface_positions_coulomb ( ) const
inline

◆ system_charge()

template<typename Proc>
int occ::solvent::SolvationCorrectedProcedure< Proc >::system_charge ( ) const
inline

◆ total_electrons()

template<typename Proc>
int occ::solvent::SolvationCorrectedProcedure< Proc >::total_electrons ( ) const
inline

◆ two_electron_derivative_fock_occ()

template<typename Proc>
std::vector< Mat > occ::solvent::SolvationCorrectedProcedure< Proc >::two_electron_derivative_fock_occ ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

◆ two_electron_gradient()

template<typename Proc>
Mat3N occ::solvent::SolvationCorrectedProcedure< Proc >::two_electron_gradient ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

◆ two_electron_hessian()

template<typename Proc>
Mat occ::solvent::SolvationCorrectedProcedure< Proc >::two_electron_hessian ( const MolecularOrbitals & mo,
const Mat & Schwarz = Mat() ) const
inline

Skeleton Hessian of the wrapped method plus the solvation terms, which depend on the density.

◆ update_core_hamiltonian()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::update_core_hamiltonian ( const MolecularOrbitals & mo,
occ::Mat & H )
inline

◆ update_scf_energy()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::update_scf_energy ( occ::core::EnergyComponents & energy) const
inline

◆ usual_scf_energy()

template<typename Proc>
bool occ::solvent::SolvationCorrectedProcedure< Proc >::usual_scf_energy ( ) const
inline

◆ with_new_basis()

template<typename Proc>
SolvationCorrectedProcedure occ::solvent::SolvationCorrectedProcedure< Proc >::with_new_basis ( const occ::gto::AOBasis & basis) const
inline

The same solvated method on another basis (another geometry), owning its procedure: what finite-difference Hessians displace.

◆ write_surface_file()

template<typename Proc>
void occ::solvent::SolvationCorrectedProcedure< Proc >::write_surface_file ( const std::string & filename)
inline

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