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