キャリア連続の式をpythonでシミュレーションしたい
pythonを用いてキャリア連続の式(電流連続の式)をシミュレーションしています。
ポアソン方程式と電界の式とキャリア連続の式はそれぞれに相互関係があり、
その前段階としてポアソン方程式と電界の式をシミュレーションをしました。
ポアソン方程式と電界の式のシミュレーションはネットにあるものを参考にして成功したのですが、
キャリア連続の式のシミュレーション(離散化や数値の設定)について参考文献がなく
シミュレーションができませんでした。
発生している問題・エラーメッセージ
一面同一色の画像が得られる。
該当のソースコード
python3
1k_b = 1.38*10**-23 # ボルツマン定数 2e = 1.60*10**-19 # 電気素量 3T = 300 # 絶対温度 4myu_e = 100 # 移動度 5n_0 = 10**-3 # 平衡時の正孔の密度 6 7# 拡散係数D_eを求める 8D_e = float(myu_e*(k_b*T / e)) 9 10tau = 10**-4 # 少数キャリアの寿命 11convegence_criterion = 10**-5 12 13# キャリア連続の式の計算 14n = np.zeros([Lx + 1, Ly + 1]) 15ni_x = np.zeros([Lx + 1, Ly + 1]) 16ni_y = np.zeros([Lx + 1, Ly + 1]) 17 18def initialize_n(condition, n, delta_Lx, delta_Ly, Lx, Ly): 19 for i in range(Lx): 20 for j in range(Ly): 21 if condition(i, j, delta_Lx, delta_Ly): 22 n[i, j] = 1 23 24def evolve_ts(im, dx2, dy2, Lx, Ly, myu_e, Ex, Ey, D_e, tau, n_0, dt, delta_Lx): 25 global n, ni_x 26 n[1:-1, 1:-1] = ni_x[1:-1, 1:-1] + dt*(myu_e*Ex*((ni_x[2:, 1:-1] - ni_x[-2:, 1:-1])/(2*delta_Lx)) + 27 D_e*((ni_x[2:, 1:-1] - 2*ni_x[1:-1, 1:-1] + ni_x[-2:, 1:-1])/dx2) - 28 (ni_x[1:-1, 1:-1] - n_0)/tau) 29 ni_x = np.copy(n) 30 im.set_array(ni_x) 31 return im, 32 33def main(): 34 global n, ni_x, delta_Lx, delta_Ly, Lx, Ly 35 dx2 = delta_Lx ** 2 36 dy2 = delta_Ly ** 2 37 38 dt = dx2 * dy2 / (2 * (dx2 + dy2)) 39 40 condition = (lambda i, j, delta_Lx, delta_Ly: 41 (((i*delta_Lx - 0.5)**2 + (j*delta_Ly - 0.5)**2 <= 0.01) 42 & ((i*delta_Lx - 0.5)**2 + (j*delta_Ly - 0.5)**2 >= .1)) 43 ) 44 45 initialize_n(condition, ni_x, delta_Lx, delta_Ly, Lx, Ly) 46 47 fig = plt.figure() 48 img = plt.subplot(111) 49 im = img.imshow(ni_x, cmap = 'hsv', interpolation = 'nearest', origin = 'lower') 50 im.figure = fig 51 fig.colorbar(im) 52 ani = animation.FuncAnimation(fig, evolve_ts, 240, 53 fargs = (im, dx2, dy2, Lx, Ly, dt, D_e, tau,), 54 blit = True, interval = 50) 55 56 plt.show() 57 58if __name__ == "__main__": 59 main() 60 61 62 63# Commented out IPython magic to ensure Python compatibility. 64# %%time 65# 66
試したこと
conditionや移動度、平衡時の正孔の密度、少数キャリアの寿命の値を変えた。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー