Full-One-Electron Fixed-MO Embedding

Compare H2/STO-3G resource estimates in vacuum and near one TIP3P water. The embedded estimates use diagonal and full_oneelectron modes.

Run The Script

uv run python examples/qmmm/full_oneelectron_embedding.py

The script prints Hamiltonian lambda, Toffoli count, logical qubits, and delta_h_offdiag_fro for:

Row

Meaning

vacuum

H2 without MM point charges

diagonal

Fixed-MO point-charge perturbation with only active-space Delta h_pp

full_oneelectron

Fixed-MO point-charge perturbation with full active-space Delta h_pq

Minimal API Pattern

import numpy as np

from q2m3.core import estimate_resources

h2_symbols = ["H", "H"]
h2_coords = np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 0.74]])

tip3p_charges = np.array([-0.834, 0.417, 0.417])
tip3p_coords = np.array(
    [
        [3.0, 0.0, 0.0],
        [3.5, 0.8, 0.0],
        [3.5, -0.8, 0.0],
    ]
)

common = dict(
    symbols=h2_symbols,
    coords=h2_coords,
    basis="sto-3g",
    active_electrons=2,
    active_orbitals=2,
)

diagonal = estimate_resources(
    **common,
    mm_charges=tip3p_charges,
    mm_coords=tip3p_coords,
    embedding_mode="diagonal",
)
full = estimate_resources(
    **common,
    mm_charges=tip3p_charges,
    mm_coords=tip3p_coords,
    embedding_mode="full_oneelectron",
)

print(diagonal.embedding_mode, diagonal.hamiltonian_1norm)
print(full.embedding_diagnostics.delta_h_offdiag_fro)

Interpretation Boundaries

full_oneelectron means the resource row includes the full fixed-MO active-space one-electron perturbation. It does not mean relaxed orbital optimization, a polarizable MM force field, or a relaxed solvation energy.

The current runtime coefficient workflow updates only diagonal terms. Full-one-electron embedding is available for resource estimates and fixed Hamiltonian/operator paths because off-diagonal one-electron terms can change the compiled operator support.