occ
Loading...
Searching...
No Matches
occ::xtb::SmdSolvationModel Class Referencefinal

SMD ("Solvation Model based on Density") for GFN-xTB. More...

#include <smd_xtb.h>

Inheritance diagram for occ::xtb::SmdSolvationModel:
[legend]
Collaboration diagram for occ::xtb::SmdSolvationModel:
[legend]

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
 
const Vecatom_potential () const override
 
double energy () const override
 
std::string name () const override
 
std::optional< SolvationSurfacessurfaces () 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::SMDSolventParametersparameters () const
 
double dielectric () const
 
const occ::solvent::surface::Surfacees_surface () const
 
size_t num_es_surface_points () const
 
const Vecsurface_charges () const
 Apparent surface charge σ at the latest update(q). Empty until then.
 
const occ::solvent::surface::Surfacecds_surface () const
 
size_t num_cds_surface_points () const
 
const Veccds_energy_elements () const
 Per-element CDS energy contribution (Hartree).
 
double e_es () const
 
double e_cds () const
 
const occ::scrf::ReactionFieldEngineengine () const
 Access the underlying engine (for inspection / tests).
 
- Public Member Functions inherited from occ::xtb::XtbSolvationModel
virtual ~XtbSolvationModel ()=default
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ SmdSolvationModel()

occ::xtb::SmdSolvationModel::SmdSolvationModel ( std::string  solvent = "water")
explicit

Member Function Documentation

◆ atom_potential()

const Vec & occ::xtb::SmdSolvationModel::atom_potential ( ) const
inlineoverridevirtual

◆ cds_energy_elements()

const Vec & occ::xtb::SmdSolvationModel::cds_energy_elements ( ) const
inline

Per-element CDS energy contribution (Hartree).

Length = number of CDS surface points. Stable across update() calls (geometry only).

◆ cds_surface()

const occ::solvent::surface::Surface & occ::xtb::SmdSolvationModel::cds_surface ( ) const
inline

◆ dielectric()

double occ::xtb::SmdSolvationModel::dielectric ( ) const
inline

◆ e_cds()

double occ::xtb::SmdSolvationModel::e_cds ( ) const
inline

◆ e_es()

double occ::xtb::SmdSolvationModel::e_es ( ) const
inline

◆ energy()

double occ::xtb::SmdSolvationModel::energy ( ) const
inlineoverridevirtual

◆ engine()

const occ::scrf::ReactionFieldEngine & occ::xtb::SmdSolvationModel::engine ( ) const
inline

Access the underlying engine (for inspection / tests).

◆ es_surface()

const occ::solvent::surface::Surface & occ::xtb::SmdSolvationModel::es_surface ( ) const
inline

◆ gradient()

Mat3N occ::xtb::SmdSolvationModel::gradient ( ) const
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.

◆ initialize()

void occ::xtb::SmdSolvationModel::initialize ( const Mat3N positions_bohr,
const IVec atomic_numbers 
)
overridevirtual

◆ name()

std::string occ::xtb::SmdSolvationModel::name ( ) const
overridevirtual

◆ num_cds_surface_points()

size_t occ::xtb::SmdSolvationModel::num_cds_surface_points ( ) const
inline

◆ num_es_surface_points()

size_t occ::xtb::SmdSolvationModel::num_es_surface_points ( ) const
inline

◆ parameters()

const occ::solvent::SMDSolventParameters & occ::xtb::SmdSolvationModel::parameters ( ) const
inline

◆ surface_charges()

const Vec & occ::xtb::SmdSolvationModel::surface_charges ( ) const
inline

Apparent surface charge σ at the latest update(q). Empty until then.

◆ surfaces()

std::optional< SolvationSurfaces > occ::xtb::SmdSolvationModel::surfaces ( ) const
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.

◆ update()

void occ::xtb::SmdSolvationModel::update ( const Vec atomic_charges)
overridevirtual

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