ファイル名: draw_2D_BZs.py

概要

2次元のブリルアンゾーンと関連する格子点をプロットするスクリプト。

詳細説明

このスクリプトは、指定された数のブリルアンゾーン(BZ)を計算し、それらを色分けしてプロットします。また、BZの境界線、逆格子点、およびカスタムカラーバー(凡例)も描画します。物理的な単位系は、 \(2\pi/a\) を単位とする逆格子空間で表現されます。

インポートされるライブラリ

標準ライブラリ

  • argparse

非標準ライブラリ

  • numpy

  • matplotlib.pyplot

  • matplotlib.colors

  • matplotlib.patches

  • mpl_toolkits.axes_grid1

  • matplotlib.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次元プロットが新しいウィンドウに表示されます。

注意事項

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