vibeqc.run_double_hybrid

vibeqc.run_double_hybrid(mol, basis, functional_name, *, density_fit=True, aux_basis='', density_fit_mp2=True, aux_basis_mp2='', dispersion=None, rks_options=None, output=None)[source]

Generic double-hybrid dispatcher.

Resolves functional_name to a Functional, runs a hybrid-DFT SCF step with that functional’s SCF piece, runs an MP2 correction on the converged KS orbitals with the functional’s mp2_c_os / mp2_c_ss scaling, optionally adds a dispersion correction, and returns a DoubleHybridResult carrying all pieces and the combined total energy.

functional_name must resolve to an is_double_hybrid functional (currently "b2plyp", "dsd-pbep86", or "pwpb95"); a ValueError is raised otherwise. The thin wrappers run_b2plyp(), run_dsd_pbep86(), and run_pwpb95() are the name-specific entry points most callers will use. "pwpb95" resolves to a meta-GGA functional, so its SCF step runs through the τ-dependent Kohn-Sham path; the dispatcher handles that transparently.

Parameters:
  • mol (Molecule, BasisSet) – The molecular system. Must be closed-shell.

  • basis (Molecule, BasisSet) – The molecular system. Must be closed-shell.

  • functional_name (str) – Name of a double-hybrid functional registered in vibe-qc’s Functional resolver.

  • density_fit (bool, default True) – Density-fit the RKS hybrid SCF step (J via RI-J, K via RI-K since double hybrids in this line all have α_HF > 0).

  • aux_basis (str, default "") – Aux basis for the SCF DF. Empty → auto-resolve a JKfit aux from the orbital basis name.

  • density_fit_mp2 (bool, default True) – Use RI-MP2 (recommended) for the post-SCF correction. False falls back to canonical MP2 — only useful for parity validation against canonical-MP2 reference codes.

  • aux_basis_mp2 (str, default "") – Aux basis for the MP2 DF. Empty → auto-resolve a per-zeta RIfit aux from the orbital basis name. Ignored when density_fit_mp2=False.

  • dispersion (str or None, default None) –

    Optional dispersion correction folded into DoubleHybridResult.e_total. Supported:

    • None — un-dispersed XC + MP2 total (the published “no-D” energy).

    • "d3bj" — Grimme-Antony-Ehrlich-Krieg 2010 D3 with Becke-Johnson damping, parameters for the functional read from the existing vibeqc.compute_d3bj() framework (prefers the optional dftd3 backend when installed, falls back to the vibe-qc native stub).

    • "d4" — Caldeweyher-Bannwarth-Grimme 2019 D4 via the optional dftd4 package; see vibeqc.compute_d4().

    The dispersion energy is stored on DoubleHybridResult.dispersion as either a DispersionResult (D3-BJ) or a D4Result (D4); both expose .energy so consumers can treat them uniformly.

  • rks_options (RKSOptions, optional) – Caller-provided options for the SCF step. The functional field is overridden with functional_name regardless; everything else is honoured. If None, a default RKSOptions is used with density_fit / aux_basis applied per the keyword arguments above.

Return type:

DoubleHybridResult