MPPT v0.3.1#

FCI spin penalties can now be configured directly in the YAML input. Set one default for CASCI/CASSCF and override or disable it separately for state-average blocks. Previous release: v0.3.0.

At a glance#

  • PySCF Interface: casscf.spin_penalty_shift enables total-spin targeting for a single FCI solver or supplies the default for state averaging.

  • State averaging: each block can inherit the default, set its own positive shift or use explicit null to disable the penalty.

  • Reporting and validation: setup reports show the effective settings; unsupported block2 penalty input is rejected explicitly.

Action required#

Existing inputs keep their behavior when all penalty settings are omitted. To enable the correction, add a positive finite shift in Hartree:

casscf:
  solver: fci
  active_orbitals: 5
  n_active_electrons: 4
  spin_penalty_shift: 1.0
  states_to_average:
    - [singlet, 50]
    - {spin: triplet, nroots: 45, spin_penalty_shift: 0.5}
    - {spin: quintet, nroots: 5, spin_penalty_shift: null}

The singlet block inherits 1.0 Eh, the triplet block uses 0.5 Eh, and the quintet block keeps the native unpenalized solver. Existing two-item entries remain supported. Without state averaging, the stage value targets the effective CASCI/CASSCF multiplicity.

See the active-space solver guide and YAML reference for the complete input contract.

Component versions#

Component

Version

MPPT bundle, DIAGPT and HEFFSO

v0.3.1

pyscf2mppt

0.6.1

Caspy

0.5.0

libgrpppy

0.1.2

CIPSIXX

0.1.0

Validation evidence#

Input and runtime acceptance covers omitted defaults, inherited and overridden block values, explicit null, single-solver targeting and block2 rejection. A synthetic CAS(4,5) test verifies 50 singlets, 45 triplets and 5 quintets with 100 distinct energies when the corresponding penalties are enabled.

The release pipeline verifies source build/tests, canonical release content, strict documentation builds and the exported snapshot before publication.

Known limitations#

The option uses PySCF fix_spin, an approximate level-shift penalty rather than exact spin projection. Inspect each root’s S² and test sensitivity to the shift; the input alone does not guarantee spin purity. This option applies to FCI and is not supported with solver: block2.