コード例 #1
0
            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
コード例 #2
0
# 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
コード例 #3
0
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
コード例 #4
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])

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
コード例 #5
0
# 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
コード例 #6
0
    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
コード例 #7
0
ファイル: 200522.py プロジェクト: zsxqblz/Ga2O3-Tight-Binding
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)")
コード例 #8
0
                 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