free_electron_band プログラム仕様

jsap_crystal.free_electron_band.cal_E(k, Ghkl)[ソース]

概要: 自由電子モデルにおけるエネルギーE(k)を計算します。

詳細説明: 与えられたk点ベクトルと逆格子ベクトルG (hkl) を用いて、自由電子のエネルギーを計算します。 k点とGhklは内部座標系で与えられ、エネルギーはeV単位で返されます。

パラメータ:
  • k -- list or numpy.ndarray 内部座標系でのk点ベクトル [kx, ky, kz]。

  • Ghkl -- list or numpy.ndarray 逆格子ベクトル [h, k, l] (ミラー指数)。

戻り値:

float 計算された自由電子のエネルギー (eV)。

jsap_crystal.free_electron_band.cal_kdistance(rg, k0, k1)[ソース]

概要: 逆格子空間における2つのk点間の距離を計算します。

詳細説明: 与えられた逆格子のmetrics (rg) を用いて、2つのk点ベクトル間の距離を計算します。 k点ベクトルは内部座標で与えられます。

パラメータ:
  • rg -- numpy.ndarray 逆格子のmetric tensor (3x3)。

  • k0 -- list or numpy.ndarray 最初のk点ベクトル [kx, ky, kz]。

  • k1 -- list or numpy.ndarray 2番目のk点ベクトル [kx, ky, kz]。

戻り値:

float 2つのk点間の距離。

jsap_crystal.free_electron_band.get_cal_Elist(xkvec, hrange, krange, lrange)[ソース]

概要: 指定されたk点リストと逆格子ベクトル範囲で自由電子エネルギーを計算します。

詳細説明: 各k点ベクトル xkvec に対して、指定された hrange, krange, lrange の すべての逆格子ベクトルGを考慮した自由電子エネルギー E(k+G) を計算し、 リストとして返します。

パラメータ:
  • xkvec -- list 計算するk点ベクトル (kx, ky, kz) のリスト。

  • hrange -- list H指数 [H_min, H_max]。

  • krange -- list K指数 [K_min, K_max]。

  • lrange -- list L指数 [L_min, L_max]。

Returns yE:

list 各k点における複数のエネルギー値を含む入れ子のリスト。

jsap_crystal.free_electron_band.get_cal_klist(klist, nk)[ソース]

概要: バンド構造計算およびプロットのためのk点リストを生成します。

詳細説明: klistnk に基づき、k点パスに沿ってほぼ等間隔に配置された計算用k点ベクトル (xkvec) と、 プロット用の累積距離 (xk) を生成します。 また、k点パスの各セグメントに関する情報も辞書形式で返します。

パラメータ:
  • klist -- list k点パスのリスト。各要素は [kx, ky, kz, k点名] の形式。

  • nk -- int プロットするk点の概数。

Returns xk:

list プロット用のk点累積距離のリスト。

Returns xkvec:

list 計算用のk点ベクトルリスト。各要素は [kx, ky, kz]。

Returns ktotallist:

list k点パスの各高対称点における累積距離のリスト。

Returns ktotal_namelist:

list k点パスの高対称点の名称リスト。

Returns res:

dict k点計算に関する追加情報を含む辞書("dklist", "nklist", "ktotal", "kstep")。

jsap_crystal.free_electron_band.get_dklist(klist, nk)[ソース]

概要: プロットするk点パスにおける、各セグメントのk点距離と累積距離を計算します。

詳細説明: klist に定義された高対称点パスに沿って、各点間の距離 (dklist) および 最初のk点からの累積距離 (ktotal_list) を計算します。 また、バンド構造プロット用のk点名称リスト (ktotal_namelist) も生成します。

パラメータ:
  • klist -- list k点パスのリスト。各要素は [kx, ky, kz, k点名] の形式。

  • nk -- int 計算するk点の概数。この関数では直接使用されないが、バンド計算の粒度を示すため引数として残す。

Returns dklist:

list 各k点セグメントの距離のリスト。

Returns ktotal_list:

list 最初のk点からの累積距離のリスト。

Returns ktotal_namelist:

list 累積距離リストに対応するk点名称のリスト。

Returns ktotal:

float 全てのk点パスの総距離。

jsap_crystal.free_electron_band.getarg(position, defval=None)[ソース]

概要: コマンドライン引数を安全に取得します。

詳細説明: 指定されたインデックスのコマンドライン引数を取得します。 インデックスが範囲外の場合は、デフォルト値を返します。

パラメータ:
  • position -- int 取得する引数のインデックス(0はスクリプト名)。

  • defval -- Any, optional 取得できなかった場合に返すデフォルト値。デフォルトはNone。

戻り値:

Any コマンドライン引数の値、またはデフォルト値。

jsap_crystal.free_electron_band.getfloatarg(position, defval=None)[ソース]

概要: コマンドライン引数を浮動小数点数として安全に取得します。

詳細説明: getarg を使用して引数を取得し、pfloat で浮動小数点数に変換します。

パラメータ:
  • position -- int 取得する引数のインデックス。

  • defval -- float or None, optional 取得または変換できなかった場合に返すデフォルト値。デフォルトはNone。

戻り値:

float or None 変換された浮動小数点数、またはデフォルト値。

jsap_crystal.free_electron_band.getintarg(position, defval=None)[ソース]

概要: コマンドライン引数を整数として安全に取得します。

詳細説明: getarg を使用して引数を取得し、pint で整数に変換します。

パラメータ:
  • position -- int 取得する引数のインデックス。

  • defval -- int or None, optional 取得または変換できなかった場合に返すデフォルト値。デフォルトはNone。

戻り値:

int or None 変換された整数、またはデフォルト値。

jsap_crystal.free_electron_band.main()[ソース]

概要: 自由電子バンド構造計算のメイン処理を実行します。

詳細説明: 結晶定数の表示、k点パスの処理、エネルギー計算、およびバンド構造のプロットを行います。 計算結果を標準出力に表示し、matplotlibによるプロットウィンドウを表示します。 ユーザーの入力があるまでウィンドウは閉じません。

jsap_crystal.free_electron_band.pfloat(str)[ソース]

概要: 文字列を浮動小数点数に安全に変換します。

詳細説明: float() 変換に失敗した場合でもプログラムを終了させず、Noneを返します。

パラメータ:

str -- str 変換する文字列。

戻り値:

float or None 変換された浮動小数点数、または変換できなかった場合はNone。

jsap_crystal.free_electron_band.pint(str)[ソース]

概要: 文字列を整数に安全に変換します。

詳細説明: int() 変換に失敗した場合でもプログラムを終了させず、Noneを返します。

パラメータ:

str -- str 変換する文字列。

戻り値:

int or None 変換された整数、または変換できなかった場合はNone。

jsap_crystal.free_electron_band.plot_band(axis, xk, yE, Erange, ktotallist, ktotal_namelist)[ソース]

概要: 自由電子バンド構造をプロットします。

詳細説明: matplotlibのAxesオブジェクトに、計算されたバンドエネルギー yE をk点累積距離 xk に対してプロットします。 高対称点 (ktotallist, ktotal_namelist) の位置に縦線とラベルを追加し、エネルギー範囲を設定します。

パラメータ:
  • axis -- matplotlib.axes.Axes バンド構造をプロットするAxesオブジェクト。

  • xk -- list プロットするk点の蓄積距離のリスト。

  • yE -- list E(xk[i])。各k点におけるエネルギー値のリスト(入れ子になったリスト)。

  • Erange -- list プロットするエネルギーの最小値と最大値 [E_min, E_max]。

  • ktotallist -- list k点境界(高対称点)における、最初のk点からの距離の和のリスト。

  • ktotal_namelist -- list k点境界における、k点の名称のリスト。

戻り値:

None

jsap_crystal.free_electron_band.terminate(message=None)[ソース]

概要: メッセージを表示してプログラムを終了します。

詳細説明: オプションのメッセージを表示し、usage 関数を呼び出した後、プログラムを終了します。

パラメータ:

message -- str or None, optional 表示する終了メッセージ。デフォルトはNone。

jsap_crystal.free_electron_band.usage()[ソース]

概要: プログラムの利用方法(usage)メッセージを表示します。

詳細説明: 現在ではシンプルなメッセージを表示しますが、将来的にはより詳細な説明を追加できます。