10.20. mrpt — Multi-reference perturbation theory

The mrpt module implements the N-electron valence (multi-reference) perturbation theory.

10.20.1. DMRG-NEVPT2

In the calculations of DMRG-CASSCF followed by DMRG-NEVPT2, canonicalization and natorb of DMRG-CASSCF should be set. These settings ensure that DMRG-CASSCF orbitals are eigenvectors of general Fock matrix. Current NEVPT2 implementation is based on this assumption. (See also discussions in github issue https://github.com/pyscf/pyscf/issues/698)

10.20.2. Program reference N-electron valance perturbation theory (NEVPT2)

class pyscf.mrpt.nevpt2.NEVPT(mc, root=0)[source]

Strongly contracted NEVPT2


To control which state to compute if multiple roots or state-average wfn were calculated in CASCI/CASSCF


compressed MPS perturber method for DMRG-SC-NEVPT2


>>> mf = gto.M('N 0 0 0; N 0 0 1.4', basis='6-31g').apply(scf.RHF).run()
>>> mc = mcscf.CASSCF(mf, 4, 4).run()
>>> NEVPT(mc).kernel()
compress_approx(maxM=500, nevptsolver=None, tol=1e-07, stored_integral=False)[source]

SC-NEVPT2 with compressed perturber

Kwargs :

DMRG bond dimension


>>> mf = gto.M('N 0 0 0; N 0 0 1.4', basis='6-31g').apply(scf.RHF).run()
>>> mc = dmrgscf.DMRGSCF(mf, 4, 4).run()
>>> NEVPT(mc, root=0).compress_approx(maxM=100).kernel()


  1. Chem. Theory Comput. 12, 1583 (2016), doi:10.1021/acs.jctc.5b01225

  1. Chem. Phys. 146, 244102 (2017), doi:10.1063/1.4986975


Kernel function is the main driver of a method. Every method should define the kernel function as the entry of the calculation. Note the return value of kernel function is not strictly defined. It can be anything related to the method (such as the energy, the wave-function, the DFT mesh grids etc.).


Hack me to load CI wfn from disk