Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test():
mol = gto.M(
atom="Li 0. 0. 0.; Li 0. 0. 1.5", basis="sto-3g", unit="bohr", verbose=0
)
mf = scf.RHF(mol).run()
# Lowdin orthogonalized AO basis.
lowdin = lo.orth_ao(mol, "lowdin")
# MOs in the Lowdin basis.
mo = solve(lowdin, mf.mo_coeff)
# make AO to localized orbital coefficients.
mfobdm = mf.make_rdm1(mo, mf.mo_occ)
### Test OBDM calculation.
nconf = 500
nsteps = 400
warmup = 15
wf = PySCFSlater(mol, mf)
configs = initial_guess(mol, nconf)
def hf_eng(self):
if self._hf_eng is not NotImplemented:
return self._hf_eng
hf_eng = scf.UHF(self.mol)
self._hf_eng = hf_eng
return self._hf_eng
addrs = numpy.argsort(abs(fcivec.ravel()))
for iaddr in reversed(addrs):
addra, addrb = divmod(iaddr, nb)
idxa = ['%3d' % x for x in str2orbidx(stringsa[addra], ncore)]
idxb = ['%3d' % (-x) for x in str2orbidx(stringsb[addrb], ncore)]
fout.write('%18.10E %s %s\n' % (fcivec[addra,addrb], ' '.join(idxa), ' '.join(idxb)))
if __name__ == '__main__':
import sys
from pyscf import gto, scf, mcscf, symm
from pyscf.tools import molden
mol = gto.M(atom='N 0 0 0; N 0 0 2.88972599',
unit='B', basis='ccpvtz', verbose=4,
symmetry=1, symmetry_subgroup='d2h')
mf = scf.RHF(mol).run()
coeff = mf.mo_coeff[:,mf.mo_occ>0]
energy = mf.mo_energy[mf.mo_occ>0]
occ = mf.mo_occ[mf.mo_occ>0]
with open('n2_hf.wfn', 'w') as f2:
write_mo(f2, mol, coeff, energy, occ)
#
mc = mcscf.CASSCF(mf, 10, 10)
mc.kernel()
nmo = mc.ncore + mc.ncas
nelecas = mc.nelecas[0] + mc.nelecas[1]
casdm1, casdm2 = mc.fcisolver.make_rdm12(mc.ci, mc.ncas, mc.nelecas)
rdm1, rdm2 = mcscf.addons._make_rdm12_on_mo(casdm1, casdm2, mc.ncore, mc.ncas, nmo)
den_file = 'n2_cas.den'
fspt = open(den_file,'w')
fspt.write('CCIQA ENERGY = 0.000000000000 THE VIRIAL(-V/T)= 2.00000000\n')
fspt.write('La matriz D es:\n')
if __name__ == '__main__':
from pyscf import gto
mol = gto.Mole()
mol.verbose = 0
mol.output = None#"out_h2o"
mol.atom = [
['O', ( 0., 0. , 0. )],
['H', ( 0., -0.757, 0.587)],
['H', ( 0., 0.757 , 0.587)],]
mol.basis = {'H': 'sto-3g',
'O': '6-31g',}
mol.symmetry = 1
mol.build()
m = scf.RHF(mol)
ehf = m.scf()
mc = CASCI(m, 4, 4)
emc = mc.casci()[0]
print(ehf, emc, emc-ehf)
#-75.9577817425 -75.9624554777 -0.00467373522233
print(emc+75.9624554777)
mc = CASCI(m, 4, (3,1))
mc.fcisolver = fci.direct_spin1
emc = mc.casci()[0]
print(emc - -75.439016172976)
if __name__ == '__main__':
from pyscf import gto
from pyscf import scf
from pyscf import cc
mol = gto.M()
numpy.random.seed(12)
nocc, nvir = 5, 12
eris = cc.ccsd._ChemistsERIs()
eris.ovvv = numpy.random.random((nocc,nvir,nvir*(nvir+1)//2)) * .1
eris.ovoo = numpy.random.random((nocc,nvir,nocc,nocc)) * .1
eris.ovov = numpy.random.random((nocc,nvir,nocc,nvir)) * .1
t1 = numpy.random.random((nocc,nvir)) * .1
t2 = numpy.random.random((nocc,nocc,nvir,nvir)) * .1
t2 = t2 + t2.transpose(1,0,3,2)
mf = scf.RHF(mol)
mcc = cc.CCSD(mf)
f = numpy.random.random((nocc+nvir,nocc+nvir)) * .1
eris.fock = f+f.T + numpy.diag(numpy.arange(nocc+nvir))
print(kernel(mcc, eris, t1, t2) - -8.0038781018306828)
mol = gto.Mole()
mol.atom = [
[8 , (0. , 0. , 0.)],
[1 , (0. , -.957 , .587)],
[1 , (0.2, .757 , .487)]]
mol.basis = 'ccpvdz'
mol.build()
rhf = scf.RHF(mol)
rhf.conv_tol = 1e-14
rhf.scf()
def label_symmetry_(mc, mo_coeff, ci0=None):
log = logger.Logger(mc.stdout, mc.verbose)
#irrep_name = mc.mol.irrep_name
irrep_name = mc.mol.irrep_id
s = mc._scf.get_ovlp()
ncore = mc.ncore
nocc = ncore + mc.ncas
try:
orbsym = scf.hf_symm.get_orbsym(mc._scf.mol, mo_coeff, s, True)
except ValueError:
log.warn('mc1step_symm symmetrizes input orbitals')
mo_cor = symm.symmetrize_space(mc.mol, mo_coeff[:, :ncore], s=s, check=False)
mo_act = symm.symmetrize_space(mc.mol, mo_coeff[:,ncore:nocc], s=s, check=False)
mo_vir = symm.symmetrize_space(mc.mol, mo_coeff[:,nocc: ], s=s, check=False)
mo_coeff = numpy.hstack((mo_cor,mo_act,mo_vir))
orbsym = symm.label_orb_symm(mc.mol, irrep_name,
mc.mol.symm_orb, mo_coeff, s=s)
mo_coeff_with_orbsym = lib.tag_array(mo_coeff, orbsym=orbsym)
active_orbsym = getattr(mc.fcisolver, 'orbsym', [])
if (not getattr(active_orbsym, '__len__', None)) or len(active_orbsym) == 0:
mc.fcisolver.orbsym = orbsym[ncore:nocc]
log.debug('Active space irreps %s', str(mc.fcisolver.orbsym))
wfnsym = 0
mol.verbose = 0
mol.output = None
mol.atom = [
['O', ( 0., 0. , 0. )],
['H', ( 0., -0.757, 0.587)],
['H', ( 0., 0.757 , 0.587)],]
mol.basis = {'H': 'sto-3g',
'O': 'sto-3g',}
mol.symmetry = 1
mol.build()
m = scf.RHF(mol)
ehf = m.scf()
norb = m.mo_coeff.shape[1]
nelec = mol.nelectron
h1e = reduce(numpy.dot, (m.mo_coeff.T, scf.hf.get_hcore(mol), m.mo_coeff))
eri = ao2mo.incore.full(m._eri, m.mo_coeff)
link_index = cistring.gen_linkstr_index(range(norb), nelec//2)
numpy.random.seed(1)
na = link_index.shape[0]
fcivec = numpy.random.random((na,na))
orbsym = pyscf.symm.label_orb_symm(mol, mol.irrep_id, mol.symm_orb, m.mo_coeff)
cis = FCISolver(mol)
cis.orbsym = orbsym
ci1 = cis.contract_2e(eri, fcivec, norb, nelec)
ci1ref = direct_ms0.contract_2e(eri, fcivec, norb, nelec)
print(numpy.allclose(ci1ref, ci1))
mol.atom = [['H', (0, 0, i)] for i in range(8)]
mol.basis = {'H': 'sto-3g'}
def init_guess_by_chkfile(mol, chkfile, project=True):
from pyscf.scf import addons
if isinstance(chkfile, pyscf.gto.Mole):
raise TypeError('''
You see this error message because of the API updates.
The first argument is chkfile file name.''')
chk_mol, scf_rec = pyscf.scf.chkfile.load_scf(chkfile)
def fproj(mo):
if project:
return addons.project_mo_nr2nr(chk_mol, mo, mol)
else:
return mo
if scf_rec['mo_coeff'].ndim == 2:
mo = scf_rec['mo_coeff']
mo_occ = scf_rec['mo_occ']
if numpy.iscomplexobj(mo):
raise NotImplementedError('TODO: project DHF orbital to ROHF orbital')
dm = make_rdm1(fproj(mo), mo_occ)
else: # UHF
mo = scf_rec['mo_coeff']
mo_occ = scf_rec['mo_occ']
dm = uhf.make_rdm1((fproj(mo[0]),fproj(mo[1])), mo_occ)
return numpy.einsum('xii,xii->', pop, pop)
PM = Pipek = PipekMezey
if __name__ == '__main__':
from pyscf import gto, scf
mol = gto.Mole()
mol.atom = '''
O 0. 0. 0.2
H 0. -0.5 -0.4
H 0. 0.5 -0.4
'''
mol.basis = 'ccpvdz'
mol.build()
mf = scf.RHF(mol).run()
mo = PM(mol).kernel(mf.mo_coeff[:,5:9], verbose=4)
frozen = [[0,1], [0,1]]
# also acceptable
#frozen = 4
ucc = UCCSD(mf, frozen=frozen)
ecc, t1, t2 = ucc.kernel()
print(ecc - -0.3486987472235819)
mol = gto.Mole()
mol.atom = [
[8 , (0. , 0. , 0.)],
[1 , (0. , -0.757 , 0.587)],
[1 , (0. , 0.757 , 0.587)]]
mol.basis = 'cc-pvdz'
mol.spin = 0
mol.build()
mf = scf.UHF(mol)
print(mf.scf())
ucc = UCCSD(mf)
ecc, t1, t2 = ucc.kernel()
print(ecc - -0.2133432430989155)
e,v = ucc.eeccsd(nroots=4)
print(e[0] - 0.2757159395886167)
print(e[3] - 0.3005716731825082)