EffectiveMass プログラム仕様

概要:

バンド構造から有効質量と運動量空間の波数kの関係を計算します。

詳細説明:

このスクリプトは、CSVファイルからバンド構造データ(運動量空間の波数kとエネルギーE)を読み込みます。 読み込んだデータを用いて、エネルギーの運動量空間の波数kに対する二階微分を計算し、そこから有効質量を導出します。 有効質量の計算では、異なる差分幅(nskip)を使用して二階微分を評価し、結果をプロットに表示します。 計算された有効質量の逆数が特定の閾値を超えた場合、プロット上でデータの連続性を分断する処理が含まれます。 最終的なプロットは、有効質量と運動量空間の波数kの関係を示します。

主な機能:
  • CSVファイルからのバンド構造データの読み込み

  • エネルギーの二階微分に基づいた有効質量の計算

  • 異なる差分幅での有効質量計算の比較

  • matplotlibによる結果のグラフ表示

関連リンク:

EffectiveMass_usage

EffectiveMass.main()
概要:

有効質量と運動量空間の波数kの関係を計算し、結果をプロットします。

詳細説明:

infile で指定されたCSVファイルからバンド構造データ(運動量空間の波数kとエネルギーE)を読み込みます。 波数kの差分dkとエネルギーEを用いて、エネルギーの運動量空間の波数kに対する二階微分を計算し、 そこから有効質量を導出します。 異なる差分幅(nskip = 1とnskip = 4)で二階微分を計算し、それぞれ有効質量を求めます。 有効質量の逆数 abs(minv) が 1.0e20 以下の場合は、有効質量のデータとして None を格納し、 プロット上でデータの連続性を分断します (cutline が 1 の場合)。 また、有効質量の符号が反転した場合もプロットを分断します。 最終的に、計算された有効質量を電子の静止質量 me で正規化し、 matplotlib を用いて運動量空間の波数kに対する正規化有効質量をプロットし、表示します。

引数:
param なし:

この関数は引数を取りません。

戻り値:
returns:

なし

rtype:

None

EffectiveMass.read_csv(fname)
概要:

指定されたCSVファイルから数値データを読み込みます。

詳細説明:

CSVファイルをオープンし、最初の行をラベルとして読み込みます。 残りの行から2列のデータを浮動小数点数として読み取り、それぞれのリストに格納します。 数値変換に失敗した行は警告メッセージを表示してスキップします。

引数:
param fname:

読み込むCSVファイルのパスとファイル名。

type fname:

str

戻り値:
returns:

1列目のラベル文字列、2列目のラベル文字列、1列目のデータリスト、2列目のデータリストのタプル。

rtype:

tuple of (str, str, list of float, list of float)

EffectiveMass.savecsv(outfile, header, datalist)
概要:

リストのリスト形式のデータをCSVファイルに保存します。

詳細説明:

指定されたファイル名でCSVファイルを開き、ヘッダー行を書き込んだ後、datalistの各要素を列として、 行ごとにデータを書き込みます。ファイル書き込みに失敗した場合はエラーメッセージを表示します。

引数:
param outfile:

出力するCSVファイルのパスとファイル名。

type outfile:

str

param header:

CSVファイルのヘッダー行の文字列のリスト。

type header:

list of str

param datalist:

出力するデータを含むリストのリスト。各内部リストは1つの列に対応します。 例: [[col1_data1, col1_data2], [col2_data1, col2_data2]]

戻り値:
returns:

なし

rtype:

None