vibe-qcDocumentation

Select and compare solvation engines

This tutorial introduces the common selector. Use one fixed molecular geometry and electronic protocol when comparing continuum implementations. These examples are workflows, not published benchmark results.

import vibeqc as vq

mol = vq.Molecule([
    vq.Atom(8, (0.0, 0.0, 0.0)),
    vq.Atom(1, (0.0, 1.498, -1.159)),
    vq.Atom(1, (0.0, -1.498, -1.159)),
], 0, 1)  # coordinates in bohr

for backend in ("cosmo", "moist"):
    result = vq.run_job(mol, method="rhf", basis="def2-svp",
        solvation=vq.SolvationOptions(backend, "water"),
        output="water_" + backend)
    sol = result.solvent_result
    print(backend, sol.energy, sol.e_solv, sol.energy-sol.e_gas)

The three numbers are the total electronic energy, environment contribution and total electronic shift from the gas-phase reference, all in Hartree. The backend defaults select different cavity/model conventions. Agreement is not expected merely because both use the word water. For a meaningful numerical comparison, match dielectric, radii, cavity, Gaussian/point kernel, geometry and method, then converge each discretization independently. The .out names the actual components and the runtime version.

COSMO-RS is selected with the same interface, but its observable and parameterization are different:

result = vq.run_job(mol, method="rks", functional="bpw91", basis="def2-tzvp",
    solvation=vq.SolvationOptions("cosmo-rs", "water"), output="water_cosmors")
thermodynamics = result.cosmors

Inspect the COSMO-RS output block for the free energy, temperature, standard states and solvent-surface provenance. The parameterization is transferred from its fitted protocol and remains experimental. Do not subtract a continuum polarization energy from this free energy and call the difference an implementation error. Start from the same observable and add justified nonelectrostatic and standard-state contributions before comparing to experiment.

The executable backend example is examples/molecular/solvation/input-unified.py. For post-SCF calculations, the manual explains the explicit frozen-reference approximation and its supported methods.