MP_Ewald プログラム仕様
- crystal.MP_Ewald.EWALD(sites, lattice_parameters, Rlatt, gij, Rgij, volume, Rvolume, ew_alpha, prec)[ソース]
エヴァルド法を用いて各サイトのマデルングポテンシャルを計算します。
- 詳細説明:
結晶構造のサイト情報、格子情報、エヴァルドパラメータ、および計算精度に基づいて、 マデルングポテンシャルを構成する実空間和 (UC1)、逆空間和 (UC2)、自己項 (UC3) を計算します。 各項はクーロン相互作用のエネルギー単位で計算され、最終的に各サイトの全マデルングポテンシャルを返します。 計算の途中経過と主要なパラメータ(rdmax, nrmax, G2max, hgmax)も表示されます。
- パラメータ:
sites --
list 各サイトの情報を格納したリスト。各要素は [name, label, z, M, q, r, color, pos] の形式です。
name: str: 原子名。
label: str: サイトラベル。
z: int: 原子番号(または形式電荷を計算に用いる場合の値)。
M: float: 質量。
q: float: サイトの電荷(電子電荷単位)。
r: float: 原子半径(表示用)。
color: str: 表示色(表示用)。
pos: numpy.ndarray: サイトの分数座標 [x, y, z]。
lattice_parameters -- list 単位格子の格子定数 `[a, b, c, alpha, beta, gamma]`(オングストロームおよび度)。
Rlatt -- list 逆格子の格子定数 `[a*, b*, c*, alpha*, beta*, gamma*]`(逆オングストロームおよび度)。
gij -- numpy.ndarray 単位格子の実空間計量テンソル。形状は (3, 3)。
Rgij -- numpy.ndarray 単位格子の逆空間計量テンソル。形状は (3, 3)。
volume -- float 単位格子の体積 (A^3)。
Rvolume -- float 単位格子の逆空間体積 (A^-3)。
ew_alpha -- float エヴァルドパラメータ alpha (A^-1)。実空間と逆空間の和の分割を制御します。
prec -- float 計算の精度。この値に基づいて、実空間および逆空間の和の打ち切り距離/波長が決定されます。
- 戻り値:
dict 計算結果を格納した辞書。
time_real_space: float: 実空間和の計算にかかった時間(秒)。
time_reciprocal_space: float: 逆空間和の計算にかかった時間(秒)。
time_total: float: 全計算にかかった時間(秒)。
UC1_list: numpy.ndarray: 各サイトの実空間和成分のリスト(電位 V)。
UC2_list: numpy.ndarray: 各サイトの逆空間和成分のリスト(電位 V)。
UC3_list: numpy.ndarray: 各サイトの自己項成分のリスト(電位 V)。
MP_list: numpy.ndarray: 各サイトのマデルングポテンシャルのリスト(電位 V)。
- crystal.MP_Ewald.main()[ソース]
メイン処理を実行し、CIFファイルからマデルングポテンシャルを計算します。
- 詳細説明:
コマンドライン引数からCIFファイルのパス、エヴァルドパラメータ alpha、および計算精度を読み込みます。 指定されたCIFファイルを解析して結晶構造情報(格子パラメータ、サイト情報など)を取得し、 EWALD 関数を呼び出してマデルングポテンシャルを計算します。 計算にかかった時間、各サイトのマデルングポテンシャル、および単位セルあたりの総マデルングエネルギーを 標準出力とログファイルに出力します。
- 戻り値:
None (処理は app.terminate() で終了します)