ファイル名: draw_2D_BZs.py
概要
2次元のブリルアンゾーンと関連する格子点をプロットするスクリプト。
詳細説明
このスクリプトは、指定された数のブリルアンゾーン(BZ)を計算し、それらを色分けしてプロットします。また、BZの境界線、逆格子点、およびカスタムカラーバー(凡例)も描画します。物理的な単位系は、 \(2\pi/a\) を単位とする逆格子空間で表現されます。
インポートされるライブラリ
標準ライブラリ
argparse
非標準ライブラリ
numpymatplotlib.pyplotmatplotlib.colorsmatplotlib.patchesmpl_toolkits.axes_grid1matplotlib.patheffects
クラス
コードにクラスは定義されていません。
関数
関数 draw_custom_colorbar(fig, ax, colors, max_zone)
概要
メインの Axes の右側に、自作のカラーバー(凡例)を描画する。
詳細説明
この関数は、ブリルアンゾーンの番号に対応する色と番号を表示するカスタムカラーバーを作成し、メインプロットの右側に配置します。各色領域の中央に、対応するブリルアンゾーンの番号が白字と黒い縁取りで表示されます。
パラメータ
fig(matplotlib.figure.Figure): メインのFigureオブジェクト。ax(matplotlib.axes.Axes): メインのAxesオブジェクト。このAxesの右側にカラーバーが追加されます。colors(list[tuple]): BZ番号に対応する色のリスト。リストのインデックスはBZ番号に相当します。max_zone(int): 描画する最大のブリルアンゾーン番号。
戻り値
None: この関数は何も返しません。
例外
コードからは確認できません。
関数 plot_brillouin_zones(max_zone, limit=None)
概要
2次元正方格子のブリルアンゾーンを計算し、可視化する。
詳細説明
指定された数のブリルアンゾーン(BZ)を計算し、各ゾーンを異なる色で描画します。プロットには、ブリルアンゾーンの境界線(垂直二等分線)と逆格子点も含まれます。また、ゾーン番号を示すカスタムカラーバーが右側に表示されます。計算は、各点 (X, Y) がどの逆格子点 G=(i, j) に最も近いか(ただし G=(0,0) を除く)を判断することで行われます。最も近い逆格子点が k 空間原点 (0,0) であれば第1BZ、最も近い逆格子点が G1 であれば、その点と原点、および G1 と原点の中間地点を結ぶ線で区切られます。一般的な第 n BZ は、原点に最も近い n 個の逆格子点よりも、原点に近い領域です。
パラメータ
max_zone(int): 描画する最大のブリルアンゾーン番号。limit(floatまたはNone): プロットの表示範囲(-limitからlimitまで)。単位は \(2\pi/a\) 。Noneの場合、np.sqrt(max_zone) + 1.0を基に自動的に計算されます。
戻り値
None: この関数は何も返しません。
例外
コードからは確認できません。
コマンドライン引数
draw_2D_BZs.py は以下のコマンドライン引数を受け付けます。
max_zone型:
int説明: 描画する最大のブリルアンゾーン番号。
デフォルト値:
10
limit型:
float説明: プロットの表示範囲を \(2\pi/a\) を単位として指定します(例:
-limitからlimitまで)。デフォルト値:
None(この場合、内部でnp.sqrt(max_zone) + 1.0に基づいて自動計算されます。)
使用例
基本的な実行(デフォルト設定)
最大のブリルアンゾーンを 10 まで、プロット範囲を自動計算で描画します。
python draw_2D_BZs.py
最大ゾーン数の指定
最大のブリルアンゾーンを 5 まで描画します。プロット範囲は自動計算されます。
python draw_2D_BZs.py 5
最大ゾーン数とプロット範囲の指定
最大のブリルアンゾーンを 3 まで、プロット範囲を -2.5 から 2.5 に設定して描画します。
python draw_2D_BZs.py 3 2.5
実行例
上記の使用例を実行すると、指定された数のブリルアンゾーンが色分けされ、その境界線、逆格子点、およびゾーン番号を示すカスタムカラーバー(凡例)を含む2次元プロットが新しいウィンドウに表示されます。
注意事項
コードからは確認できません。