occ
Loading...
Searching...
No Matches
cosmo_kernel.h File Reference
#include <Eigen/LU>
#include <array>
#include <occ/core/linear_algebra.h>
Include dependency graph for cosmo_kernel.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  occ::scrf::detail::MultipoleKernel
 Geometric factors of the atom-centred multipole expansion evaluated at a displacement d = r_cavity − R_atom: More...
struct  occ::scrf::detail::MultipoleDamping
 Short-range damping of the dipole and quadrupole kernels, f_n(d) = 1/(1 + 6·(rco/d)^kdmp_n), applied to t1 with n = 3 and to t2 with n = 5. More...
struct  occ::scrf::detail::CosmoResponse
 Pre-solved CPCM/COSMO response operator on a cavity, driven by atom- centred point-charge sources. More...
struct  occ::scrf::detail::CavityGeometry
 A cavity whose points ride rigidly on their owner atoms, for derivatives beyond the frozen-cavity gradient. More...

Namespaces

namespace  occ
namespace  occ::scrf
namespace  occ::scrf::detail
 Self-consistent reaction-field (SCRF) primitives shared between the HF/DFT-side occ::solvent::COSMO driver and the xTB-side CPCM-X / SMD implicit-solvation models.

Functions

Mat occ::scrf::detail::build_cosmo_A (const Mat3N &cavity_points, const Vec &cavity_areas)
 Build the dense COSMO A matrix on a discretised cavity: A(i, j) = 1/|r_i − r_j|, off-diagonal A(i, i) = 1.07·√(4π/S_i) ≈ 3.793051240937804 / √S_i cavity_points is 3 × ncav (Bohr), cavity_areas is ncav (Bohr²).
Mat occ::scrf::detail::build_atom_cavity_coulomb (const Mat3N &cavity_points, const Mat3N &atom_positions)
 Build the atom↔cavity Coulomb operator B(i, a) = 1/|r_i − R_a|.
MultipoleKernel occ::scrf::detail::multipole_kernel (const Vec3 &d, MultipoleDamping damping={})
Vec3 occ::scrf::detail::multipole_kernel_gradient (const Vec3 &d, double q, const Vec3 &mu, const double *theta, MultipoleDamping damping={})
 ∂φ/∂d for one atom's moments, the gradient counterpart of multipole_kernel.
CosmoResponse occ::scrf::detail::build_cosmo_response (const Mat3N &atom_positions_bohr, const Mat3N &cavity_points, const Vec &cavity_areas, double epsilon, double x)
 Build the pre-solved response.
Mat3N occ::scrf::detail::cosmo_gradient_frozen (const Mat3N &atom_positions_bohr, const Mat3N &cavity_points, const Vec &cavity_areas, const IVec &cavity_atom_index, const Vec &atom_charges, const Vec &sigma, double f_epsilon, const Vec &atom_radii_bohr=Vec(), double smoothing_width_bohr=0.0, const Mat3N &atom_dipoles=Mat3N(), const Mat &atom_quadrupoles=Mat(), const Vec &damping_rco_bohr=Vec(), double kdmp3=3.0, double kdmp5=4.0)
 Frozen-cavity analytical gradient of the polarisation energy with respect to atomic positions:
Mat occ::scrf::detail::cavity_log_weight_gradient (const CavityGeometry &cavity)
 ∂ ln w_k / ∂x (M x 3N); zero for a boolean cavity.
Mat occ::scrf::detail::cavity_log_weight_hessian (const CavityGeometry &cavity, const Vec &c)
 Σ_k c_k ∂² ln w_k / ∂x∂y (3N x 3N); zero for a boolean cavity.
Mat occ::scrf::detail::cosmo_A_derivative_product (const CavityGeometry &cavity, const Mat &dlnw, const Vec &sigma)
 (∂A/∂x) σ (M x 3N): the point-pair Coulomb terms plus, on a smooth cavity, the diagonal ∂A_kk/∂x = −½ A_kk ∂ ln w_k/∂x.
Mat occ::scrf::detail::cosmo_A_second_derivative (const CavityGeometry &cavity, const Mat &dlnw, const Vec &sigma)
 σᵀ (∂²A/∂x∂y) σ (3N x 3N), using ∂²A_kk = A_kk (¼ g gᵀ − ½ ∂² ln w_k) with g = ∂ ln w_k on the diagonal.
Mat occ::scrf::detail::atom_cavity_potential_derivatives (const CavityGeometry &cavity, const Vec &atom_charges)
 ∂φ_k/∂x (M x 3N) for the potential φ_k = Σ_a Z_a / |r_k − R_a| of atom-centred point charges Z at the cavity points.
Mat occ::scrf::detail::atom_cavity_potential_hessian (const CavityGeometry &cavity, const Vec &atom_charges, const Vec &sigma)
 Σ_k σ_k ∂²φ_k/∂x∂y (3N x 3N) for the same potential.