QuantumATK 常用脚本

import matplotlib.pyplot as plt
import numpy as np


def read_file(filepath,L):
    #L = 61
    with open(filepath) as f1:
        content = f1.readlines()

    spin_sum = []
    spin_up = []
    spin_down = []
    E = []

    for i in content[1:L+1]:
        spin_sum.append(float(i.split()[0]))
        E.append(float(i.split()[1]))

    for i in content[(L+3)*4+1:(L+3)*4+L+1]:
        spin_up.append(float(i.split()[0]))

    for i in content[(L+3)*5+1:(L+3)*5+L+1]:
        spin_down.append(float(i.split()[0]))
    return spin_sum, spin_up, spin_down, E

#print(read_file('Trans1_P.dat', L=61))

def plot(E,spin_up,spin_down,filepath):
    plt.figure()
    plt.plot(E,spin_up,'o-',label='$T_{up}$')
    plt.plot(E,spin_down,'ro-',label='$T_{down}$')
    plt.yscale('log')
    plt.xlabel('$E-E_f(eV)$')
    plt.ylabel('Transmission')
    plt.xlim(-2,2)
    plt.title('{}'.format(filepath))
    plt.legend(loc=0)
    #plt.show()

def plotTrans(E,P_spin_sum,AP_spin_sum):
    plt.figure()
    plt.plot(E,P_spin_sum,'o-',label='$T_{P}$')
    plt.plot(E,AP_spin_sum,'ro-',label='$T_{AP}$')
    plt.yscale('log')
    plt.xlabel('$E-E_f(eV)$')
    plt.ylabel('Transmission')
    # plt.ylim(0,0.01)
    plt.xlim(-2,2)
    plt.legend(loc=0)
    #plt.show()

def plotTMR(E,P_spin_sum,AP_spin_sum):
    plt.figure()
    TMR = []
    for i in range(len(P_spin_sum)):
        tmr = 100*(P_spin_sum[i]-AP_spin_sum[i])/AP_spin_sum[i]
        TMR.append(tmr)

    plt.plot(E,TMR,'o-',label='$TMR=(T_P-T_{AP})/T_{AP}$')
    plt.xlabel('$E-E_f(eV)$')
    plt.ylabel('TMR(%)')
    # plt.xlim(-0.9,0.2)
    plt.legend(loc=0)
    #plt.show()

def main():

    P_filepath = 'P'
    P_spin_sum, P_spin_up, P_spin_down, P_E = read_file(P_filepath,L=121)

    AP_filepath = 'AP'
    AP_spin_sum, AP_spin_up, AP_spin_down, AP_E = read_file(AP_filepath,L=121)

    plot(P_E,P_spin_up,P_spin_down,P_filepath)
    plot(AP_E,AP_spin_up,AP_spin_down,AP_filepath)

    if P_E == AP_E:
        plotTMR(P_E,P_spin_sum,AP_spin_sum)
        plotTrans(P_E,P_spin_sum,AP_spin_sum)
    plt.show()

if __name__ == '__main__':
    main()

 

import matplotlib.pyplot as plt
import numpy as np

with open('IV_PBE.dat','r') as f:
    content = f.readlines()

V = []
Ip = []
Iap = []
TMR = []

for i in range(len(content)):
    v = float(content[i].split()[0])
    ip = float(content[i].split()[1])*1e9
    iap = float(content[i].split()[2])*1e9
    if iap != 0: tmr = 100*(ip-iap)/iap
    # print(tmr)
    V.append(v)
    Ip.append(ip)
    #print(-iap)
    Iap.append(-iap)
    TMR.append(tmr)
for i in range(len(TMR)-1,-1,-1):
    print(TMR[i])

plt.figure()
plt.plot(V,Ip,'o-',label='$I_{P}$')
plt.plot(V,Iap,'ro-',label='$I_{AP}$')
#plt.yscale('log')
plt.xlabel('Voltage(V)')
plt.ylabel('I(nA)')
# plt.xlim(0,1)
plt.legend(loc=0)
#plt.show()


plt.figure()
plt.plot(V,TMR,'o-',label='$TMR=(I_P-I_{AP})/I_{AP}$')
plt.xlabel('Voltage(V)')
plt.ylabel('TMR(%)')
plt.legend(loc=0)
plt.show()

 

posted @ 2022-06-14 21:59  ghzphy  阅读(65)  评论(0编辑  收藏  举报