draw_unit_cells プログラム仕様

単位格子および超格子を描画するためのスクリプト。

概要:

結晶学における単位格子(unit cell)や、その繰り返しからなる超格子(supercell)を3Dで可視化します。

詳細説明:

格子定数と角度を入力として、3D空間における単位格子を構築し、指定された数だけ繰り返して描画します。 基本ベクトルを計算し、平行六面体を積み重ねることで超格子の形状を表現します。

関連リンク: draw_unit_cells_usage

crystal.draw_unit_cells.draw_cell(ax, va, vb, vc, origin, linewidth=0.5)
概要:

指定された基本格子ベクトルと原点に基づいて単一の単位格子を描画します。

引数:
param ax:

3DプロットのAxesオブジェクト。

type ax:

matplotlib.axes.Axes

param va:

第1基本格子ベクトル。

type va:

numpy.ndarray

param vb:

第2基本格子ベクトル。

type vb:

numpy.ndarray

param vc:

第3基本格子ベクトル。

type vc:

numpy.ndarray

param origin:

描画開始点。

type origin:

numpy.ndarray

param linewidth:

線の太さ。

type linewidth:

float

戻り値:
returns:

None

rtype:

None

crystal.draw_unit_cells.draw_supercell_plot(a, b, c, alpha, beta, gamma, nx=3, ny=3, nz=3, elev=5.9, azim=-67.55, draw_lattice_vectors=False, font_size=24)
概要:

指定された格子定数と角度に基づき、超格子を描画し、画像として保存して表示します。

引数:
param a:

格子定数aの長さ。

type a:

float

param b:

格子定数bの長さ。

type b:

float

param c:

格子定数cの長さ。

type c:

float

param alpha:

角度α(度)。

type alpha:

float

param beta:

角度β(度)。

type beta:

float

param gamma:

角度γ(度)。

type gamma:

float

param nx:

X方向の単位格子の繰り返し数。

type nx:

int

param ny:

Y方向の単位格子の繰り返し数。

type ny:

int

param nz:

Z方向の単位格子の繰り返し数。

type nz:

int

param elev:

3Dプロットの視点仰角。

type elev:

float

param azim:

3Dプロットの視点方位角。

type azim:

float

param draw_lattice_vectors:

基本格子ベクトルを描画するかどうかのフラグ。

type draw_lattice_vectors:

bool

param font_size:

軸ラベルのフォントサイズ。

type font_size:

int

戻り値:
returns:

None

rtype:

None

crystal.draw_unit_cells.lattice_vectors(a, b, c, alpha, beta, gamma)
概要:

結晶の格子定数と角度から基本格子ベクトルを計算します。

詳細説明:

直交座標系における3つの基本格子ベクトル va, vb, vc を導出します。 va はX軸に沿い、vb はXY平面にあり、vc は3次元空間に配置されるように定義されます。

引数:
param a:

格子定数aの長さ。

type a:

float

param b:

格子定数bの長さ。

type b:

float

param c:

格子定数cの長さ。

type c:

float

param alpha:

角度α(度)。vb と vc のなす角。

type alpha:

float

param beta:

角度β(度)。va と vc のなす角。

type beta:

float

param gamma:

角度γ(度)。va と vb のなす角。

type gamma:

float

戻り値:
returns:

3つの基本格子ベクトル va, vb, vc。

rtype:

tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]

crystal.draw_unit_cells.main()
概要:

メインの実行フロー。特定のパラメータで超格子を描画します。

戻り値:
returns:

None

rtype:

None

crystal.draw_unit_cells.set_equal_aspect(ax, points)
概要:

Matplotlib 3Dプロットのアスペクト比を全ての軸で等しく設定します。

引数:
param ax:

3DプロットのAxesオブジェクト。

type ax:

matplotlib.axes.Axes

param points:

表示範囲を決定するための点群。

type points:

numpy.ndarray

戻り値:
returns:

None

rtype:

None