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