def sort_mo(self, caslst, mo_coeff=None, base=1): if mo_coeff is None: mo_coeff = self.mo_coeff return addons.sort_mo(self, mo_coeff, caslst, base)
print(emc - -3.62638367550087) mol.atom = [ ['O', ( 0., 0. , 0. )], ['H', ( 0., -0.757, 0.587)], ['H', ( 0., 0.757 , 0.587)],] mol.basis = {'H': 'cc-pvdz', 'O': 'cc-pvdz',} mol.build() m = scf.RHF(mol) ehf = m.scf() mc = CASSCF(m, 6, 4) mc.fcisolver = pyscf.fci.solver(mol) mc.verbose = 4 mo = addons.sort_mo(mc, m.mo_coeff, (3,4,6,7,8,9), 1) emc = mc.mc1step(mo)[0] print(ehf, emc, emc-ehf) #-76.0267656731 -76.0873922924 -0.0606266193028 print(emc - -76.0873923174, emc - -76.0926176464) mc = CASSCF(m, 6, (3,1)) mo = addons.sort_mo(mc, m.mo_coeff, (3,4,6,7,8,9), 1) #mc.fcisolver = pyscf.fci.direct_spin1 mc.fcisolver = pyscf.fci.solver(mol, False) mc.verbose = 4 emc = mc.mc1step(mo)[0] #mc.analyze() print(emc - -75.7155632535814) mc.internal_rotation = True
mol.atom = [ ['O', ( 0., 0. , 0. )], ['H', ( 0., -0.757, 0.587)], ['H', ( 0., 0.757 , 0.587)],] mol.basis = {'H': 'cc-pvdz', 'O': 'cc-pvdz',} mol.charge = 1 mol.spin = 1 mol.build() m = scf.UHF(mol) ehf = m.scf() mc = mc1step_uhf.CASSCF(m, 4, (2,1)) mc.verbose = 4 mo = addons.sort_mo(mc, m.mo_coeff, (3,4,6,7), 1) emc = mc.mc2step(mo)[0] print(ehf, emc, emc-ehf) print(emc - -75.5644202701263, emc - -75.573930418500652, emc - -75.574137883405612, emc - -75.648547447838951) mc = mc1step_uhf.CASSCF(m, 4, (2,1)) mc.verbose = 4 emc = mc.mc2step()[0] print(ehf, emc, emc-ehf) print(emc - -75.5644202701263, emc - -75.573930418500652, emc - -75.574137883405612, emc - -75.648547447838951)
['H', ( 0.,-0.5 ,-0. )], ['H', ( 0.,-0. ,-1. )], ['H', ( 1.,-0.5 , 0. )], ['H', ( 0., 1. , 1. )], ] mol.basis = {'H': 'sto-3g'} mol.charge = 1 mol.spin = 1 mol.build() m = scf.UHF(mol) ehf = m.scf() mc = CASSCF(m, 4, (2,1)) #mo = m.mo_coeff mo = addons.sort_mo(mc, m.mo_coeff, [(3,4,5,6),(3,4,6,7)], 1) emc = kernel(mc, mo, micro=4, verbose=4)[1] print(ehf, emc, emc-ehf) print(emc - -2.9782774463926618) mol.atom = [ ['O', ( 0., 0. , 0. )], ['H', ( 0., -0.757, 0.587)], ['H', ( 0., 0.757 , 0.587)],] mol.basis = {'H': 'cc-pvdz', 'O': 'cc-pvdz',} mol.charge = 1 mol.spin = 1 mol.build()
def sort_mo(self, caslst, mo_coeff=None, base=1): '''Select active space. See also :func:`pyscf.mcscf.addons.sort_mo` ''' if mo_coeff is None: mo_coeff = self.mo_coeff return addons.sort_mo(self, mo_coeff, caslst, base)
['H', ( 0.,-0.5 ,-0. )], ['H', ( 0.,-0. ,-1. )], ['H', ( 1.,-0.5 , 0. )], ['H', ( 0., 1. , 1. )], ] mol.basis = {'H': 'sto-3g'} mol.charge = 1 mol.spin = 1 mol.build() m = scf.UHF(mol) ehf = m.scf() mc = CASSCF(m, 4, (2,1)) #mo = m.mo_coeff mo = addons.sort_mo(mc, m.mo_coeff, [(3,4,5,6),(3,4,6,7)], 1) emc = kernel(mc, mo, verbose=4)[1] print(ehf, emc, emc-ehf) print(emc - -2.9782774463926618) mol.atom = [ ['O', ( 0., 0. , 0. )], ['H', ( 0., -0.757, 0.587)], ['H', ( 0., 0.757 , 0.587)],] mol.basis = {'H': 'cc-pvdz', 'O': 'cc-pvdz',} mol.symmetry = 1 mol.charge = 1 mol.spin = 1 mol.build()
def sort_mo(self, caslst, mo_coeff=None, base=1): from pyscf.mcscf import addons if mo_coeff is None: mo_coeff = self.mo_coeff return addons.sort_mo(self, mo_coeff, caslst, base)
from pyscf.mcscf import addons mol = gto.Mole() mol.atom = [ ['O', ( 0., 0. , 0. )], ['H', ( 0., -0.757, 0.587)], ['H', ( 0., 0.757 , 0.587)],] mol.basis = {'H': 'cc-pvdz', 'O': 'cc-pvdz',} mol.build() m = scf.RHF(mol) ehf = m.scf() mc = density_fit(mcscf.CASSCF(m, 6, 4)) mc.verbose = 4 mo = addons.sort_mo(mc, m.mo_coeff, (3,4,6,7,8,9), 1) emc = mc.kernel(mo)[0] print(ehf, emc, emc-ehf) #-76.0267656731 -76.0873922924 -0.0606266193028 print(emc - -76.0873923174, emc - -76.0926176464) mc = density_fit(mcscf.CASSCF(m, 6, (3,1))) mc.verbose = 4 emc = mc.mc2step(mo)[0] print(emc - -75.7155632535814) mf = scf.density_fit(m) mf.kernel() #mc = density_fit(mcscf.CASSCF(mf, 6, 4)) #mc = mcscf.CASSCF(mf, 6, 4) mc = mcscf.DFCASSCF(mf, 6, 4)