Green’s-function ionisation potentials and electron affinities (GF2 and OVGF)¶
Koopmans’ theorem reads an ionisation potential off an orbital energy and is
wrong by one to two electronvolts. The one-particle electron propagator corrects
every orbital energy of one reference calculation at once through a
frequency-dependent self-energy and attaches to each ionisation a pole strength
that says whether the one-hole picture still holds. run_job(method="ovgf")
runs a Hartree-Fock reference (RHF for singlets, UHF otherwise) and then solves the
quasiparticle equation with the diagonal second-order self-energy (GF2) for the
outer-valence orbitals. It is production for that scope, including open-shell
references through a spin-orbital kernel. The result list result.ovgf holds the GF2
quasiparticle energies and pole strengths. For small closed-shell systems the .out
additionally prints one renormalised HOMO value that includes the full diagonal
third-order self-energy. What is not implemented is the literal outer-valence Green’s
function (OVGF) of von Niessen, Schirmer and Cederbaum with its A, B and C screening
recipes; the name ovgf records the lineage
(Cederbaum, L. S. (1975). *One-body Green’s function for atoms and molecules: theory and application.* Journal of Physics B: Atomic and Molecular Physics, **8**(2), 290–303. doi:[10.1088/0022-3700/8/2/018](https://doi.org/10.1088/0022-3700/8/2/018), von Niessen, W., Schirmer, J., and Cederbaum, L. S. (1984). *Computational methods for the one-particle Green’s function.* Computer Physics Reports, **1**(2), 57–125. doi:[10.1016/0167-7977(84)90002-9](https://doi.org/10.1016/0167-7977(84)90002-9)), as the
vibeqc.propagator module docstring states. The label vocabulary is defined in
Methods: theory and status. The
tutorial Ionisation potentials from the electron propagator
works water through in detail, with a Delta-SCF comparison and the third-order
theory; this page is the reference.
Quick start¶
Water at RHF/6-31G*:
from vibeqc import Atom, Molecule, run_job
ang = 1.8897259886
EV = 27.211386245988
mol = Molecule([
Atom(8, [0.0, 0.0, 0.1173 * ang]),
Atom(1, [0.0, 0.7572 * ang, -0.4692 * ang]),
Atom(1, [0.0, -0.7572 * ang, -0.4692 * ang]),
], charge=0, multiplicity=1)
result = run_job(mol, basis="6-31g*", method="ovgf", output="h2o_ovgf")
print(result) # RHFResult+OVGF(4 quasiparticle orbitals)
n_occ = mol.n_electrons() // 2
for q in result.ovgf: # one QuasiparticleResult per orbital
tag = "HOMO" if q.orbital == n_occ - 1 else "LUMO" if q.orbital == n_occ else ""
print(f"MO {q.orbital} {tag:>4} Koopmans {-q.eps_scf * EV:8.3f} eV "
f"GF2 {-q.eps_qp * EV:8.3f} eV Z = {q.pole_strength:.3f} "
f"({q.iterations} Dyson iterations, converged={q.converged})")
On a vibe-qc 0.17.10 development build (Apple M5 Max) the job takes under two
seconds. The list holds the three highest occupied orbitals and the LUMO. The
orbital-energy columns of the .out are energies in eV, negative for bound
orbitals; an ionisation potential is the negative of the corrected energy.
MO 2 Koopmans 19.221 eV GF2 17.977 eV Z = 0.930 (3 Dyson iterations, converged=True)
MO 3 Koopmans 15.536 eV GF2 13.448 eV Z = 0.914 (3 Dyson iterations, converged=True)
MO 4 HOMO Koopmans 13.539 eV GF2 11.004 eV Z = 0.907 (4 Dyson iterations, converged=True)
MO 5 LUMO Koopmans -5.839 eV GF2 -5.292 eV Z = 0.980 (3 Dyson iterations, converged=True)
and the .out prints, under OVGF / GF2 quasiparticle energies (diagonal second-order self-energy),
MO label Koopmans(eV) OVGF (eV) pole Z
4 HOMO -13.5394 -11.0040 0.9067
5 LUMO 5.8389 5.2917 0.9805
OVGF ionization potential (HOMO) = 11.0040 eV
OVGF electron affinity (LUMO) = -5.2917 eV (small-basis EA -- qualitative only)
GF2(renorm) ionization potential (HOMO) = 11.6628 eV (renormalized; pole Z=0.925)
(the table also lists MOs 2 and 3). Against the experimental vertical IP of 12.62 eV: Koopmans 13.54, GF2 11.00, renormalised 11.66, and 10.85 for a Delta-SCF cation (from the tutorial). The GF2 value undershoots because second order treats the two-hole-one-particle states as non-interacting and overestimates relaxation; the renormalised value pulls it back. The negative “electron affinity” for water is correct in sign but is the energy of a 6-31G* virtual orbital without diffuse functions and should not be quoted.
An open-shell molecule takes the UHF spin-orbital kernel automatically. The OH radical at RHF/6-31G*, with a 0.97 Å bond:
from vibeqc import Atom, Molecule, run_job
ang = 1.8897259886
EV = 27.211386245988
oh = Molecule([Atom(8, [0.0, 0.0, 0.0]), Atom(1, [0.0, 0.0, 0.97 * ang])], 0, 2)
r = run_job(oh, basis="6-31g*", method="ovgf", output="oh_ovgf")
for spin, q in r.ovgf: # (spin, QuasiparticleResult)
print(f"{spin:5s} MO {q.orbital} Koopmans {q.eps_scf * EV:9.4f} "
f"GF2 {q.eps_qp * EV:9.4f} eV Z = {q.pole_strength:.3f}")
alpha MO 4 Koopmans -14.9808 GF2 -12.7864 eV Z = 0.922
alpha MO 5 Koopmans 5.9828 GF2 5.5918 eV Z = 0.984
beta MO 3 Koopmans -13.7108 GF2 -11.6509 eV Z = 0.925
beta MO 4 Koopmans 3.6091 GF2 0.2722 eV Z = 0.939
The .out reports OVGF first ionization potential = 11.6509 eV: the smallest
ionisation potential over the alpha and beta channels. For each spin it corrects the
spin-HOMO and the spin-LUMO. The job takes about 3 s. The MSINDO analogue is
msindo_ovgf([8, 1, 1], xyz), described below.
Theory¶
The one-particle Green’s function has poles at the exact ionisation potentials and electron affinities, and the residues are the pole strengths. For a Hartree-Fock reference the zeroth-order function has poles at the orbital energies, which is Koopmans’ theorem, and the exact function follows from the Dyson equation with a self-energy \(\Sigma(\omega)\) that carries relaxation and correlation. In the diagonal approximation each ionisation \(p\) solves the quasiparticle equation
by Newton iteration from \(\omega=\varepsilon_p\) (default: tol=1e-8, at most 50
iterations), and \(Z_p\in(0,1]\) is the weight of the one-hole configuration. With the
non-iterative choice iterate=False one gets \(\varepsilon_p+\Sigma_{pp}(\varepsilon_p)\)
instead, which differed from the converged value by 0.3 eV for the water HOMO.
The second-order self-energy for a closed-shell reference, with \(i,j\) occupied and \(a,b\) virtual spatial orbitals and chemist’s notation, is
the two-hole-one-particle (\(2h1p\)) channel that lowers ionisation potentials and the two-particle-one-hole (\(2p1h\)) channel that matters for electron attachment. For a UHF reference the same quantity is written over spin orbitals with antisymmetrised integrals \(\langle pq\|rs\rangle\), \(\Sigma_{pp}(\omega)=\tfrac12\sum_{iab}|\langle pi\|ab\rangle|^2/(\omega+\varepsilon_i-\varepsilon_a-\varepsilon_b)+\tfrac12\sum_{aij}|\langle pa\|ij\rangle|^2/(\omega+\varepsilon_a-\varepsilon_i-\varepsilon_j)\), the electron-propagator analogue of UMP2. Both need the full MO two-electron tensor, which is why the routes are size-guarded. The approximations are the diagonal truncation (the ionised state keeps the shape of one canonical orbital), the second-order truncation of the interaction and the Hartree-Fock reference. The second-order truncation makes the relaxation part too large, so GF2 ionisation potentials sit below experiment.
The renormalised value adds the diagonal third-order self-energy, \(\Sigma^{(3)}_c\) per channel \(c\in\{2h1p,2p1h\}\), with its static (\(W\)) and dynamic (\(U\)) terms, and resums the ratio geometrically per channel,
falling back to the bare \(\Sigma^{(2)}_c+\Sigma^{(3)}_c\) when \(|\Sigma^{(3)}_c/\Sigma^{(2)}_c|\)
exceeds screen_cap (0.5) or \(\Sigma^{(2)}_c\approx0\). This is the outer-valence
Green’s-function idea of Cederbaum (Cederbaum, L. S. (1975). *One-body Green’s function for atoms and molecules: theory and application.* Journal of Physics B: Atomic and Molecular Physics, **8**(2), 290–303. doi:[10.1088/0022-3700/8/2/018](https://doi.org/10.1088/0022-3700/8/2/018)) and of von
Niessen, Schirmer and Cederbaum (von Niessen, W., Schirmer, J., and Cederbaum, L. S. (1984). *Computational methods for the one-particle Green’s function.* Computer Physics Reports, **1**(2), 57–125. doi:[10.1016/0167-7977(84)90002-9](https://doi.org/10.1016/0167-7977(84)90002-9)), applied to the
full diagonal third-order self-energy, and it is deliberately not their A/B/C
screening partition, which cannot be validated here against an external code. Semiempirical
NDDO references work the same way (Danovich, Danovich, David (1997). *NDDO semiempirical approximations coupled with Green’s function technique—a reliable approach for calculating ionization potentials.* Journal of Molecular Structure: THEOCHEM, **401**(3), 235–252. doi:[10.1016/S0166-1280(97)00026-2](https://doi.org/10.1016/S0166-1280(97)00026-2)).
Where it helps: outer-valence ionisations of closed-shell molecules with \(Z>0.85\), all corrected from one reference calculation at MP2-like cost, to a few tenths of an electronvolt in a good basis. Where it fails, and says so through a small \(Z\): inner-valence and core ionisations and satellite structure (the water \(2a_1\) has \(Z=0.30\) at second order), strongly correlated references, and electron affinities in a basis without diffuse functions.
Options¶
There are no OVGF-specific run_job keywords: method="ovgf" selects the route,
basis sets the basis, and the reference is chosen by the multiplicity.
What |
Behaviour |
|---|---|
Reference |
RHF for |
Orbitals corrected, closed shell |
The three highest occupied orbitals and the LUMO (the whole outer valence for small molecules). |
Orbitals corrected, open shell |
The spin-HOMO and spin-LUMO of each spin channel. |
Solver |
Newton iteration on the Dyson equation, always iterated. |
|
An object that forwards every attribute of the SCF result and adds |
|
Closed shell: a list of |
QuasiparticleResult (frozen dataclass, energies in Hartree): orbital (0-based spatial
MO index), eps_scf (Koopmans), eps_qp, sigma (the self-energy at the solution),
pole_strength, iterations, converged, and the property correction
(eps_qp - eps_scf).
The kernels are importable from vibeqc.propagator for your own orbital windows and
references (see the tutorial for a complete example):
Function |
Purpose |
|---|---|
|
Closed-shell GF2 for a list of MO indices; |
|
\(\Sigma^{(2)}_{pp}(\omega)\) in Hartree. |
|
Spin-orbital GF2; |
|
Third-order renormalised GF2; a closed shell is |
The kernels are reference-agnostic: any set of orbital energies and MO integrals (Hartree-Fock, Kohn-Sham, semiempirical) can be fed in, though the runner itself uses Hartree-Fock.
MSINDO and other references¶
vibeqc.semiempirical.methods.msindo.msindo_ovgf(atomic_numbers, coords_angstrom, *, charge=0, multiplicity=None, orbitals=None, renormalize=False, iterate=True, max_iter=200, conv_tol=1e-10, output=None)
runs the MSINDO SCF and the same self-energy over the rigorous INDO integral tensor. It
returns MsindoOVGFResult for a closed shell or MsindoUOVGFResult for an open shell
(odd valence-electron count, or multiplicity > 1; s and p elements only). Verified
for water:
from vibeqc.semiempirical.methods.msindo import msindo_ovgf
xyz = [[0, 0, 0], [0, 0.757, 0.587], [0, -0.757, 0.587]] # Angstrom
bare = msindo_ovgf([8, 1, 1], xyz)
print(f"{bare.ip_homo_ev:.3f} eV EA {bare.ea_lumo_ev:.3f} eV Z {[round(float(z), 3) for z in bare.pole_strength]}")
print(f"{msindo_ovgf([8, 1, 1], xyz, renormalize=True).ip_homo_ev:.3f} eV (renormalised)")
13.129 eV EA -7.083 eV Z [0.98, 0.988]
12.874 eV (renormalised)
The MSINDO propagator is a Python reference implementation; see MSINDO
for scope and the comparison with the reference program’s factorised-integral
approximation. Its output= writes the Danovich, Cederbaum and von Niessen citations.
Kohn-Sham (DFT) orbitals can be passed to the vibeqc.propagator kernels by hand, but
there is no run_job route for a DFT-referenced propagator.
Output¶
.out: a headerOVGF / GF2 quasiparticle energies (diagonal second-order self-energy)(open shell:(open-shell, spin-resolved second-order self-energy)) with a table of MO index, label, Koopmans energy, corrected energy and pole strength, the summary lines shown above, and for a small closed-shell system theGF2(renorm)line.Citations (
.bibtex,.references): Cederbaum 1975 and von Niessen 1984 with the route, next to the basis and SCF entries; Danovich 1997 joins formsindo_ovgf.Python:
result.ovgf, as above. A job withoptimize=Trueorhessian=Truerelaxes or differentiates the Hartree-Fock reference, not the propagator surface, and tags the surface accordingly.
Limits and gates¶
Size: the closed-shell route builds the \(n_\text{bf}^4\) MO tensor and refuses more than 100 basis functions with
NotImplementedError. The open-shell route builds a \((2n_\text{bf})^4\) spin-orbital tensor and refuses more than 40 basis functions (2 n_bf <= 80); verified with the OH radical in cc-pVTZ (2.n_bf=88), which raises after the SCF has converged. The renormalised third-order HOMO line is printed only when \(2n_\text{bf}\le60\) (at most 30 functions), andrenormalized_quasiparticle_energiesraisesNotImplementedErrorbeyondmax_spinorbitals(60). Use a smaller basis or thevibeqc.propagatorAPI on a truncated window. The size guards fire after the SCF.Electron affinities in a basis without diffuse functions are qualitative: the virtual orbitals are not variational and a bound anion needs diffuse functions. The
.outflags them; a positive \(-\varepsilon^\text{qp}\) does not establish a stable anion.Approximation: diagonal self-energy only; no off-diagonal (ADC(3)) treatment. Pole strengths below about 0.8 mark a breakdown of the orbital picture; do not quote such a line as an ionisation potential.
ECPs: a heavy-element reference with an effective core potential runs (HI at RHF/def2-SVP, valence orbitals, first ionisation 10.09 eV, \(Z\) = 0.95) and the self-energy is built over the valence orbitals the SCF filled. The feature matrix and the methods page still say that OVGF refuses an ECP reference; that statement is out of date for this build, and there is no scalar-relativistic spin-orbit treatment behind the number.
Solvent:
solvent=withmethod="ovgf"is refused (no validated post-SCF composition in solvent).Frozen core: none; all occupied orbitals enter the sums.
Unconverged SCF: no propagator block is produced.
See also¶
Ionisation potentials from the electron propagator: water with a Delta-SCF comparison, all valence orbitals and the theory of the third-order terms.
MSINDO:
msindo_ovgfand semiempirical ionisation potentials.MP2 and double hybrids and CCSD: the correlated energies that use the same MO integral seam.
TDDFT, TDA and CIS excited states: neutral excitations from the same response-theory family, and Properties.
Citations, Methods: theory and status and the feature matrix.