|
occ
|
SMD ("Solvation Model based on Density") for GFN-xTB. More...
#include <smd_xtb.h>
Public Member Functions | |
| SmdSolvationModel (std::string solvent="water") | |
| void | initialize (const Mat3N &positions_bohr, const IVec &atomic_numbers) override |
| void | update (const Vec &atomic_charges) override |
| void | update (const Vec &atomic_charges, const Mat3N &dipoles, const Mat &quadrupoles) override |
Update from the atomic charges together with the CAMM atomic dipoles (3 × N) and traceless quadrupoles (6 × N, CammMoments::qp layout), so the anisotropic part of the density polarises the continuum too. | |
| void | set_multipole_damping (const Vec &rco_bohr, double kdmp3, double kdmp5) override |
| Hand the model the solute's own short-range damping radii for the atom→cavity dipole and quadrupole kernels, so a multipolar reaction field treats the CAMM moments the way the rest of the method does. | |
| const Vec & | atom_potential () const override |
| const Mat3N & | dipole_potential () const override |
| Conjugates of the atomic dipoles and quadrupoles at the last update: ∂E_solv/∂μ (3 × N) and ∂E_solv/∂Θ (6 × N, same layout as the input). | |
| const Mat & | quadrupole_potential () const override |
| const Vec & | damping_radius_gradient () const override |
| ∂E_solv/∂R_co per atom, for damping radii that depend on the geometry. | |
| double | energy () const override |
| std::string | name () const override |
| std::optional< SolvationSurfaces > | surfaces () const override |
| Optional per-element decomposition of the latest solvation contribution. | |
| Mat3N | gradient () const override |
| Analytical gradient of the solvation energy with respect to atomic positions (Hartree/Bohr, 3 × N_atoms). | |
| const occ::solvent::SMDSolventParameters & | parameters () const |
| double | dielectric () const |
| const occ::solvent::surface::Surface & | es_surface () const |
| size_t | num_es_surface_points () const |
| const Vec & | surface_charges () const |
Apparent surface charge σ at the latest update(q). Empty until then. | |
| const occ::solvent::surface::Surface & | cds_surface () const |
| size_t | num_cds_surface_points () const |
| const Vec & | cds_energy_elements () const |
| Per-element CDS energy contribution (Hartree). | |
| double | e_es () const |
| double | e_cds () const |
| const occ::scrf::ReactionFieldEngine & | engine () const |
| Access the underlying engine (for inspection / tests). | |
Public Member Functions inherited from occ::xtb::XtbSolvationModel | |
| virtual | ~XtbSolvationModel ()=default |
SMD ("Solvation Model based on Density") for GFN-xTB.
Two cavities: • Electrostatic (ES) surface with SMD intrinsic Coulomb radii — feeds a classical-COSMO ASC solve (same machinery as CpcmXSolvationModel, just with different radii). • CDS surface with SMD CDS radii — used purely geometrically to evaluate the cavitation–dispersion–solvent rearrangement (CDS) energy E_cds = (Σ_a σ_a(geom)·A_a + γ·A_total) / (1000·E_h→kcal). The CDS piece does not depend on the SCC charges; it is fixed once the geometry is known and just rides along inside energy().
Phase 2: this class is a thin adapter over occ::scrf::ReactionFieldEngine configured with Radii::SmdIntrinsicCoulomb + include_cds = true. The xTB SCC consumes solvation via the XtbSolvationModel virtual contract — keeping the class makes that hookup transparent and gives callers an "SMD-shaped" handle for inspection.
|
explicit |
|
inlineoverridevirtual |
Implements occ::xtb::XtbSolvationModel.
|
inline |
Per-element CDS energy contribution (Hartree).
Length = number of CDS surface points. Stable across update() calls (geometry only).
|
inline |
|
inlineoverridevirtual |
∂E_solv/∂R_co per atom, for damping radii that depend on the geometry.
The caller closes the chain through its own ∂R_co/∂CN and ∂CN/∂R. Empty when the model applies no damping.
Reimplemented from occ::xtb::XtbSolvationModel.
|
inline |
|
inlineoverridevirtual |
Conjugates of the atomic dipoles and quadrupoles at the last update: ∂E_solv/∂μ (3 × N) and ∂E_solv/∂Θ (6 × N, same layout as the input).
The SCC folds these into its anisotropic potentials so the reaction field reaches the Fock matrix through the multipole channels as well as the charge one. Both are empty unless the model took the multipole update.
Reimplemented from occ::xtb::XtbSolvationModel.
|
inline |
|
inline |
|
inlineoverridevirtual |
Implements occ::xtb::XtbSolvationModel.
|
inline |
Access the underlying engine (for inspection / tests).
|
inline |
|
inlineoverridevirtual |
Analytical gradient of the solvation energy with respect to atomic positions (Hartree/Bohr, 3 × N_atoms).
Frozen-cavity convention — the cavity points move rigidly with their parent atoms and per-element areas are constant. Concrete models override; the default returns an empty matrix so callers can detect "no gradient available" without surprise.
Reimplemented from occ::xtb::XtbSolvationModel.
|
overridevirtual |
Implements occ::xtb::XtbSolvationModel.
|
overridevirtual |
Implements occ::xtb::XtbSolvationModel.
|
inline |
|
inline |
|
inline |
|
inlineoverridevirtual |
Reimplemented from occ::xtb::XtbSolvationModel.
|
inlineoverridevirtual |
Hand the model the solute's own short-range damping radii for the atom→cavity dipole and quadrupole kernels, so a multipolar reaction field treats the CAMM moments the way the rest of the method does.
Called once per geometry, before the first update. The default ignores them.
Reimplemented from occ::xtb::XtbSolvationModel.
|
inline |
Apparent surface charge σ at the latest update(q). Empty until then.
|
overridevirtual |
Optional per-element decomposition of the latest solvation contribution.
Concrete models (CPCM-X, SMD) override; the default returns std::nullopt. Reflects the state at the most recent update(q).
Reimplemented from occ::xtb::XtbSolvationModel.
|
overridevirtual |
Implements occ::xtb::XtbSolvationModel.
|
overridevirtual |
Update from the atomic charges together with the CAMM atomic dipoles (3 × N) and traceless quadrupoles (6 × N, CammMoments::qp layout), so the anisotropic part of the density polarises the continuum too.
The default drops them, which leaves charge-only models unchanged.
Reimplemented from occ::xtb::XtbSolvationModel.