Пример #1
0
def new_gs(parms):
    print(parms)
    e4s, e3d, epi, ez, tpi, tds, tdz, tsz = parms

    #dx, dy, dz2, dd, px, py, pz, 4s
    H = np.diag([e3d, e3d, e3d, e3d, e3d, epi, epi, ez, e4s])
    H[[0, 1, 5, 6], [5, 6, 0, 1]] = tpi
    H[[2, 7], [7, 2]] = tdz
    H[[7, 8], [8, 7]] = tsz
    H[[2, 8], [8, 2]] = tds

    w, vr = np.linalg.eigh(H)

    from pyscf import lib, gto, scf, mcscf, fci, lo, ci, cc
    from pyscf.scf import ROHF, UHF, ROKS
    from pyscf2qwalk import print_qwalk_mol
    chkfile = "../../pyscf/chk/Cuvtz_r1.725_s1_B3LYP_1.chk"
    mol = lib.chkfile.load_mol(chkfile)
    m = ROKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

    m.mo_coeff[:, 5:14] = np.dot(m.mo_coeff[:, 5:14], vr)
    print_qwalk_mol(mol, m, basename="new_gs/new_gs")
Пример #2
0
zz = 0
ns = []
nd = []
npi = []
nz = []
tpi = []
tsz = []
tdz = []
tds = []
for chkfile in chkfiles:
    mol = lib.chkfile.load_mol(chkfile)
    m = UKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

    print_qwalk_mol(mol, m, basename=chkfile)

    print(chkfile, "---------------")
    print(m.mo_occ[0])
    print(m.mo_occ[1])
    '''
  #Build RDM on IAO basis 
  s=m.get_ovlp()
  mo_occ=m.mo_occ
  M=m.mo_coeff[0][:,mo_occ[0]>0]
  M=reduce(np.dot,(a.T,s,M))
  dm_u=np.dot(M,M.T)
  M=m.mo_coeff[1][:,mo_occ[1]>0]
  M=reduce(np.dot,(a.T,s,M))
  dm_d=np.dot(M,M.T)
  '''
Пример #3
0
    for r in [1.963925]:
        for method in ['B3LYP']:
            for basis in ['vtz']:
                for el in ['Cu']:
                    for charge in [0]:
                        chkfile = "../chkfiles/" + el + basis + "_r" + str(
                            r) + "_c" + str(charge) + "_s" + str(
                                mol_spin) + "_" + method + ".chk"
                        mol = lib.chkfile.load_mol(chkfile)

                        if ("U" in method): m = UHF(mol)
                        else: m = ROHF(mol)
                        m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

                        #Generate files for plotting orbitals in ../orbs
                        print_qwalk_mol(mol,
                                        m,
                                        basename="../orbs/" + el + basis +
                                        "_r" + str(r) + "_c" + str(charge) +
                                        "_s" + str(mol_spin) + "_" + method)
                        if (m.mo_energy.shape[0] == 2):
                            plt.plot(m.mo_energy[0], '*', label=method)
                            plt.plot(m.mo_energy[1], '*')
                        else:
                            plt.plot(m.mo_energy * 27.2114, 'o', label=method)

#Generate s(#)_eigenvalue_comp.pdf
plt.title("Spin=" + str(mol_spin) + " eigenvalue comparison")
plt.legend(loc='best')
plt.show()
Пример #4
0
    if(i[0]==0): cu_basis.append(i)
  elif(len(cu_basis)==2):
    if(i[0]==1): cu_basis.append(i)
  elif(len(cu_basis)==3):
    if(i[0]==2): cu_basis.append(i)
  else:
    pass
'''
o_basis = mol.basis["O"]
'''
o_basis=[]
for i in (mol.basis["O"]):
  if(len(o_basis)==0): 
    if(i[0]==0): o_basis.append(i)
  elif(len(o_basis)==1): 
    if(i[0]==1): o_basis.append(i)
  else:
    pass
'''
minbasis = {'Cu': cu_basis, 'O': o_basis}

#Build IAOs
s = m.get_ovlp()
a = lo.iao.iao(mol, mo_coeff, minao=minbasis)
a = lo.vec_lowdin(a, s)
a.dump('b3lyp_iao_b_overshoot.pickle')

#Write orbs
m.mo_coeff[0][:, :a.shape[1]] = a
print_qwalk_mol(mol, m, 'scf', basename='b3lyp_iao_b_overshoot')
Пример #5
0
#Various analyses
import json
from pyscf import lib, gto, scf, mcscf, fci, lo, ci, cc
from pyscf.scf import ROHF, UHF, ROKS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pyscf2qwalk import print_qwalk_mol
from pyscf.mcscf import newton_casscf
from pyscf2qwalk import print_qwalk_mol

chkfile = "Cuvtz_r1.725_s1_UB3LYP_12.chk"
mol = lib.chkfile.load_mol(chkfile)
m = ROHF(mol)
m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))
print(sum(m.mo_occ[0]), sum(m.mo_occ[1]))
print_qwalk_mol(mol, m, method='scf', basename='Cuvtz_r1.725_s1_UB3LYP_12')
Пример #6
0
    if (mo_coeff is None):
        mo_coeff = [None, None]
        mo_coeff[0] = m.mo_coeff[0][:, occ]
        mo_coeff[1] = m.mo_coeff[1][:, occ]
    else:
        mo_coeff[0] = np.concatenate((mo_coeff[0], m.mo_coeff[0][:, occ]),
                                     axis=1)
        mo_coeff[1] = np.concatenate((mo_coeff[1], m.mo_coeff[1][:, occ]),
                                     axis=1)

#Write to file
m.mo_coeff = mo_coeff
print(m.mo_coeff[0].shape)
print(m.mo_coeff[1].shape)
print_qwalk_mol(mol, m, basename="all_s1")
'''
chkfiles = ['../ub3lyp_full/Cuvtz_r1.725_s3_UB3LYP_'+str(i)+'.chk' for i in range(6)]
chkfiles += ['Cuvtz_r1.725_s3_UB3LYP_13.chk']
occ=np.arange(14) 
mo_coeff=None

for chkfile in chkfiles:
  mol=lib.chkfile.load_mol(chkfile)
  m=ROKS(mol)
  m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))
  
  if(mo_coeff is None): 
    mo_coeff=[None,None]
    mo_coeff[0]=m.mo_coeff[0][:,occ]
    mo_coeff[1]=m.mo_coeff[1][:,occ]
Пример #7
0
        s = m.get_ovlp()
        mo_occ = m.mo_coeff[:, :h**o + 1]
        a = lo.iao.iao(mol, mo_occ, minao=minao)
        a = lo.vec_lowdin(a, s)
        mo_occ = reduce(np.dot, (a.T, s, mo_occ))
        dm_old = np.identity(h**o + 1)
        dm_u = np.dot(mo_occ, np.dot(dm_old, mo_occ.T))

        dm_old[h**o, h**o] = 0
        dm_d = np.dot(mo_occ, np.dot(dm_old, mo_occ.T))

        #Save to qwalk orb files
        for i in range(a.shape[1]):
            m.mo_coeff[:, i] = a[:, i]
        print_qwalk_mol(mol,
                        m,
                        basename="../qwalk/" + el + basis + str(charge) + "_" +
                        method + "iao")

        #Print traces and plot occ numbers
        print(np.trace(dm_d) + np.trace(dm_u))
        '''
    plt.subplot(211)
    if(basis=='vdz'): 
      plt.plot(np.diag(dm_u),'ko')
    else:
      plt.plot(np.diag(dm_u),'ks')
    plt.subplot(212)
    if(basis=='vtz'): 
      plt.plot(np.diag(dm_d),'ro')
    else:
      plt.plot(np.diag(dm_d),'rs')
Пример #8
0
m.__dict__.update(lib.chkfile.load('rohf/Cuvtz_r1.725_s1_ROHF_0.chk', 'scf'))

for i in (mol.basis["Cu"]):
    if (len(cu_basis) < 2):
        if (i[0] == 0): cu_basis.append(i)
    elif (len(cu_basis) == 2):
        if (i[0] == 1): cu_basis.append(i)
    elif (len(cu_basis) == 3):
        if (i[0] == 2): cu_basis.append(i)
    else:
        pass
o_basis = []
for i in (mol.basis["O"]):
    if (len(o_basis) == 0):
        if (i[0] == 0): o_basis.append(i)
    elif (len(o_basis) == 1):
        if (i[0] == 1): o_basis.append(i)
    else:
        pass
minbasis = {'Cu': cu_basis, 'O': o_basis}

#Build IAOs
s = m.get_ovlp()
a = lo.iao.iao(mol, mo_coeff, minao=minbasis)
a = lo.vec_lowdin(a, s)
a.dump('b3lyp_iao_b.pickle')

#Plot IAOs
m.mo_coeff[:, :a.shape[1]] = a
print_qwalk_mol(mol, m, method='scf', basename='qwalk/b3lyp_iao_b')
Пример #9
0
#build minimum basis b3lyp_iao_b.pickle (cu: 2s, 1p, 1d; o: 1s, 1p)
cu_basis = []
for i in (mol.basis["Cu"]):
    if (len(cu_basis) < 2):
        if (i[0] == 0): cu_basis.append(i)
    elif (len(cu_basis) == 2):
        if (i[0] == 1): cu_basis.append(i)
    elif (len(cu_basis) == 3):
        if (i[0] == 2): cu_basis.append(i)
    else:
        pass
o_basis = []
for i in (mol.basis["O"]):
    if (len(o_basis) == 0):
        if (i[0] == 0): o_basis.append(i)
    elif (len(o_basis) == 1):
        if (i[0] == 1): o_basis.append(i)
    else:
        pass
minbasis = {'Cu': cu_basis, 'O': o_basis}

#Build IAOs
s = m.get_ovlp()
a = lo.iao.iao(mol, mo_coeff, minao=minbasis)
a = lo.vec_lowdin(a, s)
a.dump('b3lyp_iao_b.pickle')

#Write orbs
m.mo_coeff[0][:, :a.shape[1]] = a
print_qwalk_mol(mol, m, 'scf', basename='b3lyp_iao_b')
Пример #10
0
for chkfile in chkfiles:
    mol = lib.chkfile.load_mol(chkfile)
    m = ROKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))
    print(chkfile)
    print(m.mo_occ[0])
    print(m.mo_occ[1])

    occ0 = m.mo_occ[0][:14]
    occ1 = m.mo_occ[1][:14]

    occ0 = np.argsort(-occ0)
    occ1 = np.argsort(-occ1)
    print(occ0)
    print(occ1)

    if (mo_coeff is None):
        mo_coeff = [None, None]
        mo_coeff[0] = m.mo_coeff[0][:, occ0]
        mo_coeff[1] = m.mo_coeff[1][:, occ1]
    else:
        mo_coeff[0] = np.concatenate((mo_coeff[0], m.mo_coeff[0][:, occ0]),
                                     axis=1)
        mo_coeff[1] = np.concatenate((mo_coeff[1], m.mo_coeff[1][:, occ1]),
                                     axis=1)
#Write to file
m.mo_coeff = mo_coeff
print(m.mo_coeff[0].shape)
print(m.mo_coeff[1].shape)
print_qwalk_mol(mol, m, basename="all_3extra")
Пример #11
0
    #sigma orbitals
    n = 3
    vs = np.concatenate(
        (vecs_list[0, :, :], vecs_list[3, :, :], vecs_list[6, :, :]), axis=1)
    v_opt = optmo(vs, vs[3], ovlp, symm=True, n=n)
    print(v_opt.fun)
    N = int(vs.shape[1] / 3)
    v_opt_list.append(v_opt.x[:N])
    v_opt_list.append(v_opt.x[N:2 * N])
    v_opt_list.append(v_opt.x[2 * N:])

    v_opt_list = np.array(v_opt_list).T
    print(v_opt_list.shape)

    #check overlaps
    for i in range(v_opt_list.shape[1]):
        for j in range(i + 1, v_opt_list.shape[1]):
            s = reduce(np.dot, (v_opt_list[:, i], ovlp, v_opt_list[:, j]))
            print(i, j, s)

    #Write to qwalk plot
    from pyscf2qwalk import print_qwalk_mol
    mol = lib.chkfile.load_mol(flist[0])
    m = ROHF(mol)
    m.__dict__.update(lib.chkfile.load(flist[0], 'scf'))
    m.mo_coeff[:, act_orbs[0]] = v_opt_list
    print_qwalk_mol(mol, m, basename='./plots/qw')

    #Write to pickle
    v_opt_list.dump('b3lyp_mo_symm.pickle')
Пример #12
0
#Various analyses
import json
from pyscf import lib, gto, scf, mcscf, fci, lo, ci, cc
from pyscf.scf import ROHF, UHF, ROKS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pyscf2qwalk import print_qwalk_mol

charge = 0
#S=[1,1,3,3,1,3]
S = [1, 3, 1, 3]
r = 1.725
method = 'B3LYP'
basis = 'vtz'
el = 'Cu'
for run in range(len(S)):
    chkfile = "../chk/" + el + basis + "_r" + str(r) + "_s" + str(
        S[run]) + "_" + method + "_" + str(run) + "mirror.chk"
    mol = lib.chkfile.load_mol(chkfile)
    m = ROKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

    print_qwalk_mol(mol, m, basename="../orbs/gs" + str(run) + "mirror")
Пример #13
0
S = 1
r = 1.725
method = 'UB3LYP'
basis = 'vtz'
el = 'Cu'

occ = np.arange(14)
mo_coeff = None
for run in range(11):
    chkfile = el + basis + "_r" + str(r) + "_s" + str(
        S) + "_" + method + "_" + str(run) + ".chk"
    mol = lib.chkfile.load_mol(chkfile)
    m = ROKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

    if (mo_coeff is None):
        mo_coeff = [None, None]
        mo_coeff[0] = m.mo_coeff[0][:, occ]
        mo_coeff[1] = m.mo_coeff[1][:, occ]
    else:
        mo_coeff[0] = np.concatenate((mo_coeff[0], m.mo_coeff[0][:, occ]),
                                     axis=1)
        mo_coeff[1] = np.concatenate((mo_coeff[1], m.mo_coeff[1][:, occ]),
                                     axis=1)

#Write to file
m.mo_coeff = mo_coeff
print(m.mo_coeff[0].shape)
print(m.mo_coeff[1].shape)
print_qwalk_mol(mol, m, basename="all_1do")
Пример #14
0
S = 3
r = 1.725
method = 'UB3LYP'
basis = 'vtz'
el = 'Cu'

occ = np.arange(14)
mo_coeff = None
for run in range(6):
    chkfile = el + basis + "_r" + str(r) + "_s" + str(
        S) + "_" + method + "_" + str(run) + ".chk"
    mol = lib.chkfile.load_mol(chkfile)
    m = ROKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

    if (mo_coeff is None):
        mo_coeff = [None, None]
        mo_coeff[0] = m.mo_coeff[0][:, occ]
        mo_coeff[1] = m.mo_coeff[1][:, occ]
    else:
        mo_coeff[0] = np.concatenate((mo_coeff[0], m.mo_coeff[0][:, occ]),
                                     axis=1)
        mo_coeff[1] = np.concatenate((mo_coeff[1], m.mo_coeff[1][:, occ]),
                                     axis=1)

#Write to file
m.mo_coeff = mo_coeff
print(m.mo_coeff[0].shape)
print(m.mo_coeff[1].shape)
print_qwalk_mol(mol, m, basename="all_hispin")
Пример #15
0
    if (dm_u.shape[0] > 12):
        print('Active trace: ', sum(np.diag(dm_u)[act]),
              sum(np.diag(dm_d)[act]))  #Active Trace
    print(np.diag(dm_u)[act] + np.diag(dm_d)[act])
    print(labels)

    #Check e matrix
    s = m.get_ovlp()
    H1 = np.diag(m.mo_energy)
    e1 = reduce(np.dot,
                (a.T, s, m.mo_coeff, H1, m.mo_coeff.T, s.T, a)) * 27.2114
    e1 = (e1 + e1.T) / 2.
    labels = [
        "3s", "4s", "3px", "3py", "3pz", "3dxy", "3dyz", "3dz2", "3dxz",
        "3dx2y2", "2s", "2px", "2py", "2pz"
    ]

    #Eigenvalue comparison
    w, __ = np.linalg.eigh(e1)
    plt.plot(sorted(m.mo_energy[:len(w)] * 27.2114), 'go', label='MO')
    plt.plot(w, 'b*', label='IAO')
    plt.xlabel('Eigenvalue')
    plt.ylabel('Energy (eV)')
    plt.show()
    plt.close()

#Plot iaos
for i in range(a.shape[1]):
    m.mo_coeff[:, i] = a[:, i]
print_qwalk_mol(mol, m, basename="../full_orbs/b3lyp_iao_b_full")
Пример #16
0
import json
from pyscf import lib, gto, scf, mcscf, fci, lo, ci, cc
from pyscf.scf import ROHF, UHF, ROKS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pyscf2qwalk import print_qwalk_mol

charge = 0
S = [1, 1, 3, 3, 1, 3]
r = 1.725
method = 'B3LYP'
basis = 'vtz'
el = 'Cu'

occ = np.arange(14)
mo_coeff = None
for run in range(len(S)):
    chkfile = "../chk/" + el + basis + "_r" + str(r) + "_s" + str(
        S[run]) + "_" + method + "_" + str(run) + ".chk"
    mol = lib.chkfile.load_mol(chkfile)
    m = ROKS(mol)
    m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))

    if (mo_coeff is None): mo_coeff = m.mo_coeff[:, occ]
    else: mo_coeff = np.concatenate((mo_coeff, m.mo_coeff[:, occ]), axis=1)

#Write to file
m.mo_coeff = mo_coeff
print_qwalk_mol(mol, m, basename="../orbs/all")
Пример #17
0
from pyscf2qwalk import print_qwalk_mol


el='Cu'
r=1.725
method='UB3LYP'
<<<<<<< HEAD
S=1
for run in range(10,11):
=======
S=3
for run in range(6):
>>>>>>> ba5cb5d2c420434d93aeb8fb854b6ac770efe311
  chkfile=el+'vtz'+"_r"+str(r)+"_s"+str(S)+"_"+method+"_"+str(run)+".chk"
  mol=lib.chkfile.load_mol(chkfile)
  m=ROHF(mol)
  m.__dict__.update(lib.chkfile.load(chkfile,'scf'))
  print(sum(m.mo_occ[0]),sum(m.mo_occ[1]))
<<<<<<< HEAD
  print_qwalk_mol(mol,m,method='scf',basename='qwalk_vtz/gs_do'+str(run))
=======
  print_qwalk_mol(mol,m,method='scf',basename='qwalk_vtz/gs3_'+str(run))
>>>>>>> ba5cb5d2c420434d93aeb8fb854b6ac770efe311
exit(0)

#df=pd.DataFrame.from_csv('cuo_u.csv')
#df=df[df['basis']=='vtz']
#df['E']-=min(df['E'])
#df['E']*=27.2114
#print(df)
Пример #18
0
#Various analyses
import json
from pyscf import lib, gto, scf, mcscf, fci, lo, ci, cc
from pyscf.scf import ROHF, UHF, ROKS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pyscf2qwalk import print_qwalk_mol
from pyscf.mcscf import newton_casscf
from pyscf2qwalk import print_qwalk_mol

chkfile = "test_mom.chk"
mol = lib.chkfile.load_mol(chkfile)
m = ROHF(mol)
m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))
print(sum(m.mo_occ[0]), sum(m.mo_occ[1]))
print_qwalk_mol(mol, m, method='scf', basename='orbs/test_mom')
Пример #19
0
#Various analyses
import json
from pyscf import lib, gto, scf, mcscf, fci, lo, ci, cc
from pyscf.scf import ROHF, UHF, ROKS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pyscf2qwalk import print_qwalk_mol
from pyscf.mcscf import newton_casscf
from pyscf2qwalk import print_qwalk_mol
'''
el='Cu'
r=1.725
method='UB3LYP'
S=1
for run in range(14,15):
  chkfile=el+'vtz'+"_r"+str(r)+"_s"+str(S)+"_"+method+"_"+str(run)+".chk"
  mol=lib.chkfile.load_mol(chkfile)
  m=ROHF(mol)
  m.__dict__.update(lib.chkfile.load(chkfile,'scf'))
  print_qwalk_mol(mol,m,method='scf',basename='qwalk_vtz/gs'+str(run))
'''

chkfile = "3d8_vtz.chk"
mol = lib.chkfile.load_mol(chkfile)
m = ROHF(mol)
m.__dict__.update(lib.chkfile.load(chkfile, 'scf'))
print_qwalk_mol(mol, m, method='scf', basename='qwalk_vtz/3d8_vtz')