Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Environment

VeloxChem implements both implicit (CPCM and SMD) and explicit (polarizable embedding) solvation models.

Implicit solvation

Implicit solvation models describe the effect of a surrounding liquid environment by replacing the explicit solvent molecules with a continuous dielectric medium that interacts self‑consistently with the electronic structure of the solute. Tomasi et al. (2005)

A separation is made between equilibrium and non-equilibrium solvation. In the former case, the timescale is such that both nuclear and electronic relaxations take place in the environment, such as in molecular structure optimizations. In the latter case, only electrons are fully equilibrated with the time-dependent solute charge density, such as in UV/vis spectrum simulations.

CPCM

In the conductor‑like polarizable continuum model (CPCM), the solute is placed inside a cavity defined by its molecular surface, and the reaction field is obtained by solving surface‑charge equations that approximate the dielectric screening of a perfect conductor and are subsequently scaled to represent the desired solvent permittivity.

VeloxChem implements the CPCM model for:

  • SCF energies

  • gradients (structure optimizations)

  • linear response (UV/vis spectra and more)

Python script

import veloxchem as vlx

molecule = vlx.Molecule.read_name("ammonia")
basis = vlx.MolecularBasis.read(molecule, "def2-svp")

scf_drv = vlx.ScfRestrictedDriver()
scf_drv.xcfun = "b3lyp"
scf_drv.solvation_model = "cpcm"
scf_results = scf_drv.compute(molecule, basis)

rsp_drv = vlx.LinearResponseEigenSolver()
rsp_drv.nstates = 10
rsp_results = rsp_drv.compute(molecule, basis, scf_results)

opt_drv = vlx.OptimizationDriver(scf_drv)
opt_results = opt_drv.compute(molecule, basis, scf_results)

Text file

@jobs
task: scf
@end

@method settings
basis: def2-svp
xcfun: b3lyp
solvation model: cpcm
cpcm epsilon : 78.39
@end

@molecule
charge: 0
multiplicity: 1
xyz:
...
@end

SMD

The solvation model based on density (SMD) combines a self‑consistent reaction‑field description of the electrostatic polarization with empirically parametrized terms for cavitation, dispersion, and solvent–solute interactions based on the solute’s electron density, enabling accurate free‑energy predictions across a wide range of solvents. For further details, see Marenich et al. (2009).

In Veloxchem, the electrostatic contribution is determined using the CPCM model.

Python script

import veloxchem as vlx

molecule = vlx.Molecule.read_name("methanol")
basis = vlx.MolecularBasis.read(molecule, "def2-svp")

scf_drv = vlx.ScfRestrictedDriver()

scf_drv.solvation_model = "smd"
scf_drv.smd_solvent = "water"

scf_results = scf_drv.compute(molecule, basis)

Text file

@jobs
task: scf
@end

@method settings
basis: def2-svp
xcfun: b3lyp
solvation model: smd
smd solvent : water
@end

@molecule
charge: 0
multiplicity: 1
xyz:
...
@end

Polarizable embedding

An explicit representation of the environment is available with the polarizable embedding (PE) model. Molecules in the environment are represented by site charges and polarizabilities. VeloxChem supports the PE model for:

  • SCF energies

  • linear response (UV/vis spectra and more)

The PE model is invoked in input files by giving the name of the associated potential file.

Loading...

Python script

import veloxchem as vlx

solute_xyz = """3
water
O        0.0000000000      0.0000000000      0.0000000000                 
H        0.6891400000      0.8324710000      0.0000000000                 
H        0.7224340000     -0.8726890000      0.0000000000
"""

molecule = vlx.Molecule.read_xyz_string(solute_xyz)
basis = vlx.MolecularBasis.read(molecule, "def2-svp")

scf_drv = vlx.ScfRestrictedDriver()

# requires PyFraME until we get an internal PE module
#scf_drv.potfile = "solvent.pot"

scf_results = scf_drv.compute(molecule, basis)

Text file

@jobs
task: scf
@end

@method settings
basis: aug-cc-pvdz
potfile: solvent.pot
@end

@molecule
charge: 0
multiplicity: 1
xyz:
...
@end

Potential file

The potential file named solvent.pot in this example takes the following form.

@environment
units: angstrom
xyz:
O        1.0991810000      2.2167050000      0.2791250000  water  1
H        2.2673500000      2.2529740000      0.6013580000  water  1
H        0.9984050000      2.8080510000     -0.5840690000  water  1
O       -0.8223690000      0.2141140000     -2.3767710000  water  2
H       -1.5990410000      0.8408210000     -2.6698860000  water  2
H       -0.4683410000      0.4151750000     -1.5365150000  water  2
O        1.7377440000     -2.0168380000     -0.4861090000  water  3
H        2.0753880000     -2.2446490000     -1.3654140000  water  3
H        1.6636970000     -2.7516570000      0.0543720000  water  3
O       -1.0758700000     -0.2692330000      2.5139440000  water  4
H       -0.5822670000     -0.1887880000      1.5058600000  water  4
H       -1.1632420000      0.7082890000      2.8568430000  water  4
@end

@charges
O  -0.67444408  water
H   0.33722206  water
H   0.33722206  water
@end

@polarizabilities
O       5.73935090    0.00000000    0.00000000    5.73935090    0.00000000    5.73935090  water
H       2.30839051    0.00000000    0.00000000    2.30839051    0.00000000    2.30839051  water
H       2.30839051    0.00000000    0.00000000    2.30839051    0.00000000    2.30839051  water
@end

The polarizability components are listed in the order xx, xy, xz, yy, yz, zz.

References
  1. Tomasi, J., Mennucci, B., & Cammi, R. (2005). Quantum Mechanical Continuum Solvation Models. Chem. Rev., 105(8), 2999–3094. 10.1021/cr9904009
  2. Marenich, A. V., Cramer, C. J., & Truhlar, D. G. (2009). Universal Solvation Model Based on Solute Electron Density and on a Continuum Model of the Solvent Defined by the Bulk Dielectric Constant and Atomic Surface Tensions. J. Phys. Chem. B, 113(18), 6378–6396. 10.1021/jp810292n