Beispiel #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")
Beispiel #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)
  '''
Beispiel #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()
Beispiel #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')
Beispiel #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')
Beispiel #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]
Beispiel #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')
Beispiel #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')
Beispiel #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')
Beispiel #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")
Beispiel #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')
Beispiel #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")
Beispiel #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")
Beispiel #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")
Beispiel #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")
Beispiel #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")
Beispiel #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)
Beispiel #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')
Beispiel #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')