Create a Solvent Model
Goal
Define the solvent environment for your quantum-chemical calculation using the fluent builder API. Kvantify Qrunch supports two main solvent models:
Polarizable Continuum Model (PCM): the solvent is treated as a continuous dielectric medium
Fragment-based Multiscale Embedding (FraME): the solvent can be described using QM/MM-type embedding using either point charges (electrostatic embedding) or fragment-based atom-centered distributed multipoles and polarizabilities (polarizable embedding) that explicitly respond to the solute’s field
The solvent is used as input when building a molecular configuration. For more on this, see Create a MolecularConfiguration.
Note
PCM is currently not compatible with the projective embedding method.
Prerequisites
For FraME: a potential file describing the solvent environment (see example in Polarizable Embedding “The Frame”)
Overview
Starting from the solvent creator:
import qrunch as qc
solvent = qc.solvent_creator()
and narrowing down and finally call .create() to instantiate the solvent object (for details on how to use the fluent builder pattern, see Understanding and Using Kvantify Qrunch’s Fluent Builder Pattern):
import qrunch as qc
solvent = (
qc.solvent_creator()
# .pcm() or .frame()
.create()
The choices are:
.pcm(dielectric_constant=...): builds a PCM solvent.frame(potential_file=...): builds a FraME solvent
Available solvent models
The PCM model describes the solvent as a continuous polarizable medium characterized by a macroscopic dielectric constant (ε). The solute is placed inside a molecular-shaped cavity, and the solvent’s electrostatic response is modeled via boundary conditions on this cavity.
Typical dielectric constants:
Water ≈ 78.4
Methanol ≈ 33.0
Benzene ≈ 2.3
Examples:
The solvent can be specified by directly providing the dielectric constant:
import qrunch as qc
solvent_pcm = (
qc.solvent_creator() # Start the solvent builder
.pcm(dielectric_constant=78.4) # Narrow to PCM with water dielectric
.with_method("IEF-PCM") # Configure PCM method (optional)
.create() # Create the solvent object
)
Alternatively, you can specify a solvent by name, and Kvantify Qrunch will use the corresponding dielectric constant provided it exists in the internal database (common solvent names are shown in the code documentation):
import qrunch as qc
solvent_pcm = (
qc.solvent_creator() # Start the solvent builder
.pcm(solvent="water") # Narrow to PCM with water solvent
.with_method("IEF-PCM") # Configure PCM method (optional)
.create() # Create the solvent object
)
Available PCM methods:
"IEF-PCM": Integral Equation Formalism PCM (default and widely used)"C-PCM": Conductor-like PCM (approximation for high dielectric media)"SS(V)PE": Surface and Simulation of Volume Polarization for Electrostatics"COSMO": Conductor-like Screening Model
Warning
BETA FEATURE — The FraME model is experimental and may change or be removed in future versions without notice.
The FraME model provides a microscopic description or atomistic of the solvent. It models the environment as atomic centers described either by point charges (electrostatic embedding) from classical force fields or by fragment-based distributed multipoles and polarizabilities (polarizable embedding) which can be derived from quantum-mechanical calculations. See the Polarizable Embedding “The Frame” for a full demonstration of how to generate the required potential files using the PyFraME package.
Example:
import qrunch as qc
solvent_frame = (
qc.solvent_creator() # Start the solvent builder
.frame(potential_file="solvent_potential.pot") # Narrow to FraME with potential file
.create() # Create the solvent object
)