3.327418, 3.327418, 3.327418, 3.327418, 3.445864, 3.445864, 3.445864, 3.445864, 3.605804, 3.612253, 4.337574, 4.337574, 4.470498, 4.470498, 4.652131, 4.862916, 4.945890, 4.945890] onsite = [-1, -1, -1, -1] unit_conv = 3.80998212 # hbar/2mA to eV m_start = 0.2 m_end = 0.4 m_step = 0.01 r_start = 0 r_end = 1 r_step = .2 m_list = np.arange(m_start, m_end, m_step) r_list = np.arange(r_start, r_end, r_step) # for m in m_list: # for r in r_list: m = 0.513 r = 2 print("m=%.2f r-%.2f started\n" %(m, r)) hopping = np.divide(-1, (m*lat**2)) * unit_conv * pow(np.divide(lat, bond_len), r) my_class = Ga2O3_Ga_s_Class(onsite, hopping, m, r) print("Fermi Surface plot started\n\n") for fermi_level in 0.2*np.arange(100) + np.min(my_class.evals[0]): print("FE=%.2f started\n" %(fermi_level)) my_class.plotFermiSurf(fermi_level, "FS_pdf/Ga2O3_%.2fm_%.2fr_%.3fFE.png" %(m, r, fermi_level), real_unit=True) del my_class
# with open('wannier_band.dat','rb') as file: # wannier_band_reader=csv.reader(file) # wannier_band_reader. wannier_band_raw = np.loadtxt('wannier_band.dat', dtype=float) # shift minimum to 0 wannier_band_raw[:, 1] = wannier_band_raw[:, 1] - np.min(wannier_band_raw[:, 1]) wannier_band = [] # store different bands into different dimensions wannier_band.append(wannier_band_raw[0:532, 1]) wannier_band.append(wannier_band_raw[533:1065, 1]) wannier_band.append(wannier_band_raw[1066:1598, 1]) wannier_band.append(wannier_band_raw[1599:2131, 1]) outfile = open("LS_scan.csv", "w+") for i in range(len(m_list)): print("m=%.3f r=%.3f started\n" % (m_list[i], r_list[i])) hopping = np.divide(-1, (m_list[i] * lat**2)) * unit_conv * pow( np.divide(lat, bond_len), r_list[i]) my_class = Ga2O3_Ga_s_Class(onsite, hopping, m_list[i], r_list[i]) error = my_class.getLSError(wannier_band, [0, 1, 2, 3]) outfile.writelines("%.3f\t%.3f\t%f\t%f\n" % (m_list[i], r_list[i], error, my_class.emass_0)) my_class.savePlot('LS_pdf/%.3fm_%.3fr.pdf' % (m_list[i], r_list[i])) my_class.overlapPlot( wannier_band, [0, 1, 2, 3], 'wannier_pdf/%.3fm_%.3fr.pdf' % (m_list[i], r_list[i])) del my_class
r_list = -135.45 * (m_list**2) + 191.93 * m_list - 57.386 # with open('wannier_band.dat','rb') as file: # wannier_band_reader=csv.reader(file) # wannier_band_reader. wannier_band_raw = np.loadtxt('wannier_band.dat', dtype=float) # shift minimum to 0 wannier_band_raw[:, 1] = wannier_band_raw[:, 1] - np.min(wannier_band_raw[:, 1]) wannier_band = [] # store different bands into different dimensions wannier_band.append(wannier_band_raw[0:532, 1]) wannier_band.append(wannier_band_raw[533:1065, 1]) wannier_band.append(wannier_band_raw[1066:1598, 1]) wannier_band.append(wannier_band_raw[1599:2131, 1]) outfile = open("LS_scan.csv", "w+") for i in range(len(m_list)): print("m=%.3f r=%.3f started\n" % (m_list[i], r_list[i])) hopping = np.divide(-1, (m_list[i] * lat**2)) * unit_conv * pow( np.divide(lat, bond_len), r_list[i]) my_class = Ga2O3_Ga_s_Class(hopping, m_list[i], r_list[i]) error = my_class.getLSError(wannier_band, [0, 1, 2, 3]) outfile.writelines("%.3f\t%.3f\t%f\t%f\n" % (m_list[i], r_list[i], error, my_class.emass_0)) my_class.overlapPlot( wannier_band, [0, 1, 2, 3], 'wannier_pdf/Ga2O3_w_%.3fm_%.3fr.pdf' % (m_list[i], r_list[i])) del my_class
wannier_band_raw[:,1] = wannier_band_raw[:,1] - np.min(wannier_band_raw[:,1]) wannier_band = [] # store different bands into different dimensions wannier_band.append(wannier_band_raw[0:532,1]) wannier_band.append(wannier_band_raw[533:1065,1]) wannier_band.append(wannier_band_raw[1066:1598,1]) wannier_band.append(wannier_band_raw[1599:2131,1]) vss = -0.75 vsp = -0.75 vpp_s = 1 vpp_p = 0 n = 4 print("vss=%.2f vsp=%.2f vpp_s=%.2f vpp_p=%.2f started\n" %(vss, vsp, vpp_s, vpp_p)) # calculate ss hopping hopping[0:34] = vss * pow(np.divide(lat, ss_bond_len), n) # calculate sp hopping hopping[34:226] = vsp * sp_len_cos[:,1] * pow(np.divide(lat, sp_len_cos[:,0]), n) # calculate pp hopping hopping[226:520] = (vpp_s * pp_len_cos[:,1] + vpp_p * pp_len_cos[:,2]) * pow(np.divide(lat, pp_len_cos[:,0]), n) my_class = Ga2O3_Ga_s_Class(onsite, hopping, vss, n) # outfile.writelines(my_class.getMassString()) print(my_class.getMassString()) # my_class.savePlot('%.3f_%.3f_%.3f_%.3f.pdf' %(vss, vsp, vpp_s, vpp_p)) my_class.overlapPlot(wannier_band, [0, 1, 2, 3], 'w_%.3f_%.3f_%.3f_%.3f.pdf' %(vss, vsp, vpp_s, vpp_p)) my_class.savePlot('%.3f_%.3f_%.3f_%.3f.pdf' %(vss, vsp, vpp_s, vpp_p)) my_class.save4BandPlot('4_%.3f_%.3f_%.3f_%.3f.pdf' %(vss, vsp, vpp_s, vpp_p)) # if(np.abs(my_class.emass_0 - target_emass) < threshold): # good_scan_outfile.writelines(my_class.getMassString()) del my_class
# m2_list = np.arange(m2_start, m2_end, m2_step) t1_list = np.arange(t1_start, t1_end, t1_step) t2_list = np.arange(t2_start, t2_end, t2_step) r_list = np.arange(r_start, r_end, r_step) scan_outfile = open("Emass_scan.csv", "w+") good_scan_outfile = open("good_Emass_scan.csv", "w+") target_emass = 0.31 threshold = 0.01 for t1 in t1_list: for t2 in t2_list: for r in r_list: print("t1=%.3f r1-%.3f t2=%.3f r2-%.3f started\n" % (t1, r, t2, r)) # hopping_no_O = np.divide(-1, (m1*lat**2)) * unit_conv * pow(np.divide(lat, bond_len_no_O), r) # hopping_has_O = np.divide(-1, (m2*lat**2)) * unit_conv * pow(np.divide(lat, bond_len_has_O), r) hopping_no_O = t1 * pow(np.divide(lat, bond_len_no_O), r) hopping_has_O = t2 * pow(np.divide(lat, bond_len_has_O), r) hopping = np.concatenate([hopping_no_O, hopping_has_O]) my_class = Ga2O3_Ga_s_Class(onsite, hopping, t1, r, t2, r) scan_outfile.writelines(my_class.getMassString()) my_class.savePlot('Emass_pdf/%.3f_%.3f_%.3f_%.3f.pdf' % (t1, r, t2, r)) if (np.abs(my_class.emass_0 - target_emass) < threshold): good_scan_outfile.writelines(my_class.getMassString()) del my_class
3.30067, 3.3067, 3.32742, 3.32742, 3.32742, 3.32742, 3.44586, 3.44586, 3.44586, 3.44586, 3.6058, 3.61225 ] unit_conv = 3.80998212 # hbar/2mA to eV m_start = 0.2 m_end = 0.4 m_step = 0.01 r_start = 0 r_end = 1 r_step = .2 m_list = np.arange(m_start, m_end, m_step) r_list = np.arange(r_start, r_end, r_step) # for m in m_list: # for r in r_list: m = 0.42 r = 2 print("m=%.2f r-%.2f started\n" % (m, r)) hopping = np.divide(-1, (m * lat**2)) * unit_conv * pow( np.divide(lat, bond_len), r) my_class = Ga2O3_Ga_s_Class(hopping, m, r) print("Fermi Surface plot started\n\n") for fermi_level in 0.1 * np.arange(100) + np.min(my_class.evals[0]): print("FE=%.2f started\n" % (fermi_level)) my_class.plotFermiSurf(fermi_level, real_unit=True) del my_class
wannier_band_raw = np.loadtxt('wannier_band.dat', dtype=float) # shift minimum to 0 wannier_band_raw[:,1] = wannier_band_raw[:,1] - np.min(wannier_band_raw[:,1]) wannier_band = [] # store different bands into different dimensions wannier_band.append(wannier_band_raw[0:532,1]) wannier_band.append(wannier_band_raw[533:1065,1]) wannier_band.append(wannier_band_raw[1066:1598,1]) wannier_band.append(wannier_band_raw[1599:2131,1]) print("m1=%.3f r1-%.3f m2=%.3f r2-%.3f started\n" %(m1, r1, m2, r2)) hopping_no_O = np.divide(-1, (m1*lat**2)) * unit_conv * pow(np.divide(lat, bond_len_no_O), r1) hopping_has_O = np.divide(-1, (m2*lat**2)) * unit_conv * pow(np.divide(lat, bond_len_has_O), r2) hopping = np.concatenate([hopping_no_O, hopping_has_O]) my_class = Ga2O3_Ga_s_Class(onsite, hopping, m1, r1, m2, r2) fig1, ax1 = plt.subplots() # specify horizontal axis details # set range of horizontal axis ax1.set_xlim(my_class.k_node[0], my_class.k_node[-1]) ax1.set_ylim(0, 12) # put tickmarks and labels at node positions ax1.set_xticks(my_class.k_node) ax1.set_xticklabels(my_class.label) # add vertical lines at node positions for n in range(len(my_class.k_node)): ax1.axvline(x=my_class.k_node[n], linewidth=0.5, color='k') # put title ax1.set_xlabel("Path in k-space") ax1.set_ylabel("Band energy (eV)")
1] = wannier_band_raw[:, 1] - np.min(wannier_band_raw[:, 1]) wannier_band = [] # store different bands into different dimensions wannier_band.append(wannier_band_raw[0:532, 1]) wannier_band.append(wannier_band_raw[533:1065, 1]) wannier_band.append(wannier_band_raw[1066:1598, 1]) wannier_band.append(wannier_band_raw[1599:2131, 1]) outfile = open("LS_scan.csv", "w+") for i in range(len(m1_list)): print("m1=%.3f r1-%.3f m2=%.3f r2-%.3f started\n" % (m1_list[i], r1_list[i], m2_list[i], r2_list[i])) hopping_no_O = np.divide(-1, (m1_list[i] * lat**2)) * unit_conv * pow( np.divide(lat, bond_len_no_O), r1_list[i]) hopping_has_O = np.divide(-1, (m2_list[i] * lat**2)) * unit_conv * pow( np.divide(lat, bond_len_has_O), r2_list[i]) hopping = np.concatenate([hopping_no_O, hopping_has_O]) my_class = Ga2O3_Ga_s_Class(onsite, hopping, m1_list[i], r1_list[i], m2_list[i], r2_list[i]) error = my_class.getLSError(wannier_band, [0, 1, 2, 3]) outfile.writelines("%.3f\t%.3f\t%.3f\t%.3f\t%f\t%f\n" % (m1_list[i], r1_list[i], m2_list[i], r2_list[i], error, my_class.emass_0)) my_class.savePlot('LS_pdf/%.3fm1_%.3fr1_%.3fm2_%.3fr2.pdf' % (m1_list[i], r1_list[i], m2_list[i], r2_list[i])) my_class.overlapPlot( wannier_band, [0, 1, 2, 3], 'wannier_pdf/%.3fm1_%.3fr1_%.3fm2_%.3fr2.pdf' % (m1_list[i], r1_list[i], m2_list[i], r2_list[i])) del my_class