pnjunction プログラム仕様
- electrical.pnjunction.calculate_diode_current(v_target, temp, js, n_diode, rs, area, v_initial)[ソース]
指定された印加電圧におけるPN接合ダイオードの電流をニュートン法を用いて計算します。
理想ダイオードモデルに直列抵抗 (Rs) を加味した方程式 (V_total = V_diode + I_diode * R_s) を ニュートン法を用いて数値的に解きます。これにより、目標の印加電圧 V_target における ダイオードにかかる電圧 V_diode と、それに対応する電流 I_diode を高精度で求めます。 ニュートン法の初期値として前回の計算結果を使用することで、収束性を向上させています。
- パラメータ:
v_target -- float 目標とする印加電圧 (V)。
temp -- float 温度 (K)。
js -- float 逆方向飽和電流 (A/cm^2)。
n_diode -- float ダイオード理想係数 (無次元)。
rs -- float 直列抵抗 (ohm)。
area -- float ダイオードの面積 (cm^2)。
v_initial -- float ニュートン法の初期値として使用するダイオード電圧 (V)。 通常は前回の計算結果や予測値が用いられます。
- 戻り値:
- returns v_diode:
float ダイオードにかかる最終的な電圧 (V)。
- returns current:
float ダイオードに流れる最終的な電流 (A)。
- electrical.pnjunction.calculate_material_params(args)[ソース]
PN接合ダイオードの材料パラメータ(逆方向飽和電流、内部電位)を計算します。
半導体の特性(キャリア有効質量、ドーピング濃度、移動度、寿命など)と温度に基づき、 伝導帯・価電子帯有効状態密度、フェルミ準位、内部電位 (Vbi)、キャリア拡散係数、拡散長を計算し、 最終的にダイオードの逆方向飽和電流 Js を決定します。
- パラメータ:
args -- コマンドライン引数を格納したargparse.Namespaceオブジェクト。 以下の属性を持つことが期待されます。 :param args.temp: float 温度 (K) :param args.men: float 電子の有効質量比 (無次元) :param args.mhp: float 正孔の有効質量比 (無次元) :param args.ecn: float N側伝導帯端エネルギー (eV) :param args.ndn: float N側ドーピング濃度 (/cm^3) :param args.evp: float P側価電子帯端エネルギー (eV) :param args.nap: float P側ドーピング濃度 (/cm^3) :param args.mun: float 電子移動度 (cm^2/Vs) :param args.taun: float 電子寿命 (s) :param args.mup: float 正孔移動度 (cm^2/Vs) :param args.taup: float 正孔寿命 (s)
- 戻り値:
- returns js:
float 逆方向飽和電流 (A/cm^2)
- returns v_bi:
float 内部電位 (V)
- electrical.pnjunction.main()[ソース]
PN接合ダイオードのIV特性シミュレーションのメイン処理を実行します。
コマンドライン引数から半導体材料のパラメータ、シミュレーションの電圧範囲、 プロットの表示オプションなどを受け取ります。 calculate_material_params 関数でダイオードの基本パラメータ (Js, Vbi) を計算し、 その後、calculate_diode_current 関数を繰り返し呼び出して、 指定された電圧範囲におけるダイオード電流を計算します。 計算された電流-電圧特性はmatplotlibでプロットされ、コンソールに主要な計算結果が出力されます。
- 戻り値:
なし
- 戻り値の型:
None