crystal_XRD.py

概要

X線回折のブラッグ角計算スクリプトです。結晶格子パラメータとサイト情報に基づいて、X線回折ピークの 角、格子面間隔 d 、ミラー指数 (hkl) を計算し、表示します。

詳細説明

このスクリプトは、指定された格子パラメータと原子サイト情報を用いて、結晶構造のX線回折パターンをシミュレートします。直接格子および逆格子の各種パラメータ(格子ベクトル、メートルテンソル、単位胞体積)を計算し、その後、ブラッグの法則に基づいて各ミラー指数 (hkl) に対する 回折角と格子面間隔 (d) を算出します。計算された回折データは、 角でソートされて表示されます。

スクリプトの main() 関数は以下のステップを実行します。

  1. 直接格子の格子ベクトル、メートルテンソル、単位胞体積を計算し、コンソールに表示します。

  2. 逆格子の格子パラメータ、格子ベクトル、メートルテンソル、単位胞体積を計算し、コンソールに表示します。

  3. 指定されたX線波長 wl の最大値 Q2max に基づいて、最小格子面間隔 dmin とミラー指数 hkl の最大探索範囲 (hmax, kmax, lmax) を決定します。

  4. 決定された範囲内の全ての整数ミラー指数 (h, k, l) の組み合わせについて、以下の計算を実行します。

    • 逆格子空間での原点 (0, 0, 0) からの距離 G を計算します。 Gmin より小さい距離は無視され、 (0, 0, 0) ピーク(入射X線)を除外します。

    • 格子面間隔 d1.0 / G として計算します。

    • ブラッグの法則 = 2d sinθ に基づき、 sinθ = wl / (2.0 * d) を計算します。 sinθ1.0 以上になる場合は回折が発生しないため無視します。

    • 回折角 2.0 * todeg * arcsin(sinθ) として計算します。計算された Q2max を超える場合は無視します。

    • 計算された (2θ, d, h, k, l) の情報をリスト qlist に追加します。

  5. qlist 角を主要なソートキーとして昇順にソートし、その結果をコンソールに出力します。

このスクリプトは、結晶学的な計算のための基本関数を提供する tkcrystalbase.py モジュールに依存しています。

依存関係

このスクリプトは以下のライブラリおよびカスタムモジュールに依存しています。

  • 標準ライブラリ:

    • sys

    • os

  • 非標準ライブラリ:

    • numpy (数値計算用)

    • mpl_toolkits.mplot3d (インポートされていますが、コード内で直接使用されていません)

    • matplotlib.pyplot (インポートされていますが、コード内で直接使用されていません)

  • カスタムモジュール:

    • tkcrystalbase (結晶学的な計算関数を提供)

入力

このスクリプトはコマンドライン引数や外部設定ファイルからの入力を受け付けません。必要な設定はスクリプト内のグローバル変数として直接定義されています。

内部設定

以下のグローバル変数がスクリプトの動作を制御します。

  • lattice_parameters: 結晶の格子パラメータを定義するリスト。 [a, b, c, alpha, beta, gamma] の順で、長さはオングストローム、角度は度で指定されます。

    • デフォルト値: [5.62, 5.62, 5.62, 90.0, 90.0, 90.0] (立方晶系を想定)

  • sites: 結晶内の原子サイト情報を定義するリスト。各サイトは、以下の要素を含むリストとして定義されます。

    • [原子名 (str), サイトラベル (str), 原子番号 (int), 原子質量 (float), 電荷 (float), 半径 (float), (str), 相対座標 (np.array([x, y, z]))]

    • デフォルトではNaCl構造に似た8つのサイト情報が設定されています。

  • wl: 使用するX線の波長をオングストローム単位で定義します。

    • デフォルト値: 1.5405

  • Gmin: 逆格子空間での距離 G の最小値を定義します。この値より小さい G の回折ピークは無視されます。これは (0, 0, 0) の原点ピークを除外するために使用されます。

    • デフォルト値: 1.0e-5

  • Q2max: 計算対象とする 角の最大値を度単位で定義します。

    • デフォルト値: 150.0

出力

スクリプトはすべての結果を標準出力(コンソール)に出力します。ファイル出力は行いません。

コンソール出力

  • 直接格子の情報:

    • 設定された格子パラメータ。

    • 計算された3つの格子ベクトル ax, ay, az (オングストローム単位)。

    • 計算されたメートルテンソル gij (オングストローム単位)。

    • 計算された単位胞体積 (立方オングストローム単位)。

  • 逆格子の情報:

    • 計算された逆格子パラメータ。

    • 計算された3つの逆格子ベクトル Rax, Ray, Raz (逆オングストローム単位)。

    • 計算された逆格子メートルテンソル Rgij (逆オングストローム単位)。

    • 計算された逆単位胞体積 (逆立方オングストローム単位)。

  • hkl 探索範囲:

    • Q2maxwl に基づいて決定された h, k, l の最大探索値 (hmax, kmax, lmax)

  • X線回折ピーク情報:

    • 計算された回折ピークごとに、以下の情報が 角でソートされた順に表示されます。

      • 角 (度)

      • 格子面間隔 d (オングストローム)

      • ミラー指数 (h k l)

使用方法

このスクリプトはPythonインタプリタを使用して直接実行します。

python crystal_XRD.py

実行後、結晶構造の格子情報と計算されたX線回折ピーク情報がコンソールに表示されます。

主要関数

main()

メイン処理を実行し、結晶の基本情報とX線回折結果を表示します。

この関数はスクリプトの主要なロジックをカプセル化しており、上述の「詳細説明」セクションで述べた一連の計算と表示を orchestrate します。引数は受け取らず、戻り値もありません。

グローバル変数

  • lattice_parameters: 結晶の格子パラメータを定義するリストです。要素は [a, b, c, α, β, γ] の順で、長さはオングストローム、角度は度で指定されます。デフォルト値は [5.62, 5.62, 5.62, 90.0, 90.0, 90.0] です。

  • sites: 結晶内の原子サイト情報を定義するリストです。各サイトは [原子名, サイトラベル, 原子番号, 原子質量, 電荷, 半径, 色, 相対座標] を含むリストとして定義されます。相対座標は numpy.array オブジェクトです。

  • wl: 使用するX線の波長をオングストローム単位で定義します。デフォルト値は 1.5405 です。

  • Gmin: 逆格子空間での距離 G の最小値を定義します。この値より小さい G の回折ピークは無視されます。デフォルト値は 1.0e-5 です。

  • Q2max: 計算対象とする 角の最大値を度単位で定義します。デフォルト値は 150.0 です。

制限事項

  • tkcrystalbase.py モジュールが同じディレクトリ、またはPythonのパス上に存在している必要があります。

  • 格子パラメータやサイト情報はスクリプト内でハードコードされており、外部からの動的な入力(コマンドライン引数やファイル読み込みなど)には対応していません。これらの値を変更するには、直接スクリプトを編集する必要があります。

  • X線回折の強度計算は行われません。出力は 角、格子面間隔 d 、ミラー指数 hkl のみです。

  • mpl_toolkits.mplot3dmatplotlib.pyplot がインポートされていますが、コード内でプロットを生成する処理は実装されていません。

関連情報

関連リンク: :doc:crystal_XRD_usage

ライセンス

コードからは確認できません。

著作権

コードからは確認できません。