lattice_plane プログラム仕様

格子面 (hkl) を3Dで可視化するスクリプト

このスクリプトは、指定された格子定数とミラー指数 (hkl) に基づいて、 結晶の単位格子とその中の (hkl) 面を3Dで描画します。 コマンドライン引数としてミラー指数h, k, lを受け入れ、それらの値に応じて面を可視化します。 描画されるのは単位格子に最も近い (hkl) 面の一部です。

lattice_plane.py 技術ドキュメント

crystal.lattice_plane.compute_frac_polygon(h: int, k: int, l: int, fverts: ndarray, edges: list[tuple[int, int]]) ndarray | None[ソース]

ミラー指数 (hkl) によって定義される平面と単位格子の辺との交点を計算し、ポリゴンとして返します。

この関数は、平面の方程式 hx + ky + lz = 1 を使用して、 単位格子を構成する各辺との交点を求めます。 交点が辺の内部 (0 <= t <= 1) にある場合のみ採用し、 それらの交点を多角形の頂点として収集します。 最後に、これらの頂点を平面上の角度に基づいてソートし、 凸多角形を形成するように並べ替えます。

パラメータ:
  • h (int) -- ミラー指数 h。

  • k (int) -- ミラー指数 k。

  • l (int) -- ミラー指数 l。

  • fverts (numpy.ndarray) -- 分数座標系における単位格子の頂点配列。

  • edges (list[tuple[int, int]]) -- 単位格子の辺を定義する頂点インデックスのペアのリスト。

戻り値:

計算された交点を角度順に並べたポリゴン頂点の配列。交点が存在しない場合はNone。

戻り値の型:

numpy.ndarray or None

crystal.lattice_plane.init_frac_cell()[ソース]

分数座標系における単位格子の頂点と辺を初期化します。

この関数は、立方晶を想定した分数座標の8つの頂点と、 それらの頂点を結ぶ12本の辺のインデックスのリストを生成します。 これらの情報は、単位格子を表現するために使用されます。

戻り値:

(fverts, edges)

戻り値の型:

(numpy.ndarray, list[tuple[int, int]])

Returns fverts:

分数座標系における単位格子の8つの頂点の配列。

Returns edges:

単位格子の辺を定義する頂点インデックスのペアのリスト。

crystal.lattice_plane.main()[ソース]

スクリプトのメインエントリポイント。単位格子と指定されたミラー指数面を描画します。

この関数は、コマンドライン引数からミラー指数 (h, k, l) を読み込み、 結晶の格子定数と角度に基づいて実空間の格子ベクトルを計算します。 その後、init_frac_cellcompute_frac_polygon を呼び出して、 分数座標系の単位格子頂点と (hkl) 面のポリゴンを取得します。 これらの分数座標を実空間座標に変換し、Matplotlibの3Dプロットを用いて、 単位格子、(hkl) 面、格子軸ラベル、およびミラーインターセプトの注釈を描画します。 最終的に、生成されたプロットを画像ファイルとして保存し、画面に表示します。

戻り値:

なし

戻り値の型:

None