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