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