pytc.fno¶
Frozen-natural-orbital (FNO) / MP2-natural-orbital truncation.
make_fno_mo_coeff builds MP2 natural orbitals from an RHF mean field,
keeps only the most important virtuals, and returns a truncated
mf copy (plus the matching mo_coeff / mo_occ / mo_energy)
that drops straight into the existing ISDFXTC.from_pyscf(mf, ...) →
RCCSD(mf, xtc_obj=..., ...) pipeline with n_orb < n_ao.
Design note — why a truncated mf rather than bare arrays: the XTC and
solver code paths read mo_coeff and mo_occ from the same source
(XTC.from_pyscf pulls mf.mo_coeff/mf.mo_occ;
solver.xtc_ccsd.RCCSD inherits cc.mo_coeff/cc._scf.mo_occ
from the mf passed to it). Returning one self-consistent truncated
mf keeps those two read-sites in agreement (len(mo_occ) ==
mo_coeff.shape[1] == n_orb) with no API change anywhere downstream.
The occupied orbitals are kept untouched and first; only the virtual space is rotated into natural-orbital form and truncated. The kept virtual block is then semicanonicalized (diagonalizing the Fock within it) so the downstream CCSD sees a canonical-ish reference.
Classes
Outcome of an MP2-natural-orbital truncation. |
Functions
Build MP2 natural orbitals and truncate the virtual space. |