Hi PySCF team,
I am trying to perform a frozen-core NEVPT2 calculation for the $F_2$ molecule(sto-6g) (18e, 10o). My setup is as follows:
- Active Space: (2e, 2o) CASCI.
- Objective: I want to keep the two 1s orbitals (4e, 2o) completely frozen, and the perturbation to only involve the remaining (12e, 6o) .
My Questions:
-
Does the pyscf.mrpt.nevpt2.NEVPT class support a .frozen attribute similar to the MP2 or CCSD classes? I noticed that adding nev.frozen = [0, 1] doesn't seem to change the nev.ncore.
-
If a built-in .frozen attribute is not available for NEVPT2, what is the recommended way to achieve this?
Should I manually truncate the orbital space and modify the core Hamiltonian (hcore) to account for the frozen electrons? For example:
- Calculate the effective potential (
veff) of the 2 frozen orbitals.
- Add this
veff to the hcore of a dummy SCF object.
- Reduce
mol.nelectron and set ncore to 6 for the CASCI/NEVPT2 objects.
Is this the physically correct procedure in PySCF to ensure the frozen orbitals are properly "removed" from the perturbation summation while still contributing their static potential to the remaining electrons?
Code Snippet of my current attempt:
import numpy as np
from pyscf import mcscf, mrpt
# Standard CASCI(2e, 2o) with all 8 core orbitals
mc = mcscf.CASCI(mf, ncas=2, nelecas=2)
mc.mo_coeff = my_reordered_mo
mc.kernel()
# How to freeze the first 2 orbitals here?
nev = mrpt.nevpt2.NEVPT(mc)
# nev.frozen = [0, 1] # This doesn't seem to use in NEVPT2
nev.kernel()
Any guidance on the standard practice for frozen-core NEVPT2 would be greatly appreciated. Thank you!
Hi PySCF team,
I am trying to perform a frozen-core NEVPT2 calculation for the$F_2$ molecule(sto-6g) (18e, 10o). My setup is as follows:
My Questions:
Does the
pyscf.mrpt.nevpt2.NEVPTclass support a.frozenattribute similar to theMP2orCCSDclasses? I noticed that addingnev.frozen = [0, 1]doesn't seem to change the nev.ncore.If a built-in
.frozenattribute is not available for NEVPT2, what is the recommended way to achieve this?Should I manually truncate the orbital space and modify the core Hamiltonian (
hcore) to account for the frozen electrons? For example:veff) of the 2 frozen orbitals.veffto thehcoreof a dummy SCF object.mol.nelectronand setncoreto 6 for the CASCI/NEVPT2 objects.Is this the physically correct procedure in PySCF to ensure the frozen orbitals are properly "removed" from the perturbation summation while still contributing their static potential to the remaining electrons?
Code Snippet of my current attempt:
Any guidance on the standard practice for frozen-core NEVPT2 would be greatly appreciated. Thank you!