next up previous contents index
Next: GridCalc: k点格子での計算 Up: k空間でのスピンテクスチャの解析 Previous: 概要   Contents   Index

FermiLoop: 一定エネルギー面での計算

ポストプロセスコード「kSpin」にはk空間スピン密度行列を計算する4つの方法があります。 これはキーワード「Calc.Type」で指定します。 ここでは4つの方法のうち、FermiLoopを説明します。 FermiLoopはスピンテクスチャとk空間スピン密度行列を一定エネルギー面上(例えばフェルミ面)で計算します。 FermiLoopを用いたスピンテクスチャの解析例としてAu(111)表面のモデルをここで説明します。 FermiLoopは二つの段階で k 点を探索します。 第一段階では計算すべきバンドを探すために大域的な探索を実施します。 第二段階では三角メッシュを用いて一定エネルギー面上のk点を特定します。

前節で議論した「Au111Surface_FL.dat」を用いてOpenMXのSCF計算を実行した後で「kSpin」の計算を行います。 「kSpin」の実行に関連するキーワードを以下に列挙します。 これらのキーワードは入力ファイル「Au111Surface_FL.dat」中に記載されています。 また入力ファイル「Au111Surface_FL.dat」はディレクリ「work」中に収容されています。

kSpinに関連するキーワードの一覧

    Filename.scfout      Au111Surface.scfout 
    Filename.outdata     Au111Surface_FL     
    Calc.Type            FermiLoop         # FermiLoop, GridCalc,
                                             BandDispersion, or MulPOnly 
                                             default: MulPOnly
    Energy.Range         0.0  0.0          # eV; default: 0.0  0.0
    Search.kCentral      0.0  0.0  0.0     # default: 0.0  0.0  0.0
    Calc.Type.3mesh      2                 # default: 1
    kRange.3mesh         0.2  0.2          # default: 0.5  0.5
    k-plane.1stStep      21 21             # default: 2 2
    k-plane.2ndStep      3 3               # default: 3 3
    Eigen.Brent          On                # on|off, default: On
    Trial.Brent          5                 # default: 5
    Calc.Bandbyband      Off               # on|off, default: Off
    Calc.Band.Min        55
    Calc.Band.Max        56 
    MulP.Vec.Scale       0.1  0.1  0.1     # default: 1.0  1.0  1.0


キーワードの仕様

それぞれのキーワードの仕様を以下に説明します。

Filename.scfout
「kSpin」によって読み込まれるscfoutファイルの名前を指定します。

Filename.outdata
出力ファイルの名前を指定します。このキーワードはOpenMX計算のキーワード「System.Name」に相当します。

Calc.Type
FermiLoop, GridCalc, BandDispersion, もしくは MulPOnlyのいずれかを選択します。 デフォルトの設定はMulPOnlyです。ここではFermiLoopを選択します。

Energy.Range
解析を実施するバンドを探索するためのエネルギー範囲を指定します。 FermiLoopでは上限値と下限値に対して同一の値を指定します。 単位はeVです。もし異なる値が設定されると、それらの平均値が使用されます。 デフォルト値は「-0.5 0.5」であり、これはフェルミ面に対応します。

Search.kCentral
ある中心k点の周辺で一定エネルギー値を持つk点の探索が実施されます。 本キーワードによりこの中心k点の指定を行います。 一定エネルギー値はキーワード「Energy.Range」で指定します。 k点の指定方法はキーワード「Band.kpath」に従います。 デフォルト値は「0.0 0.0 0.0」(つまり$\Gamma $点)です。

Calc.Type.3mesh
スピンテクスチャが計算される面を指定します。 '1', '2', '3'の値はそれぞれ$k_ak_b$, $k_bk_c$, $k_ck_a$面に対応します。 デフォルト値は1です。

kRange.3mesh
k点が計算される逆空間の二次元領域を二つの値で指定します。 例えば、キーワード「Calc.Type.3mesh」の値が1($k_ak_b$面)の際には、 値「0.2 0.3」は $-0.2\leq k_a\leq 0.2$, $-0.3 \leq k_b \leq 0.3$ の領域を指定します。 k点の指定の表記はキーワード「Band.kpath」に従います。 デフォルト値は「0.5 0.5」(つまり第一ブリルアンゾーンの全体)です。

k-plane.1stStep
キーワード「kRange.3mesh」で指定された領域を分割する格子点の数を与えます。 これは第一段階の探索において用いられます。 例えば、キーワード「Calc.Type.3mesh」の値が1 ($k_ak_b$面)ならば、 値「2 3」は$k_a$軸方向に2点の格子点、$k_b$軸方向に3点の格子点で分割することを意味します。 もし、値が「1 1」でキーワード「Calc.Bandbyband」の値が「ON」の際には、 FermiLoopは第一段階を省略します。これは多数のMPIプロセスを用いた大規模計算において有用です。 これに関連してk-plane.2ndStep; Calc.Bandbyband; Calc.BandMin; Calc.BandMaxも参照してください。 デフォルト値は「2 2」です。

k-plane.2ndStep
第二段階の探索における格子点の数を指定します。 これは第一段階で分割された領域のうち、計算に必要な領域を三角メッシュを用いてさらに細かく分割します。 表記はキーワード「k-plane.1stStep」と同一です。これに関連して「k-plane.1stStep」も参照してください。 デフォルト値は「3 3」です。

Eigen.Brent
指定された一定エネルギー面上(つまり、キーワード「Energy.Range」の値)のk点を探索するため FermiLoopにBrent法を用いるなら「ON」を、用いない場合には「OFF」を指定します。 もし値が「OFF」ならば、FermiLoopは線型補間法を用います。 デフォルト値は「ON」です。これに関連して「Trial.Brent」も参照してください。

Trial.Brent
Brent法(Eigen.Brentを参照してください)のステップ数の最大値を指定します。 キーワード「Eigen.Brent」の値が「ON」の際にこのキーワードは有効となります。 デフォルト値は5です。これに関連して「Eigen.Brent」も参照してください。

Calc.Bandbyband
FermiLoopで与えられたバンドを計算させる場合は「ON」、さもなければ「OFF」を指定します (Calc.BandMin; Calc.BandMaxを参照してください)。デフォルト値は「OFF」です。

Calc.BandMin
バンドインデックスを指定することで計算するバンドの下限値を指定します。 キーワード「Calc.Bandbyband」の値がONの場合にこのキーワードは有効です(Calc.Bandbyband; Calc.BandMaxを参照してください)。 バンドインデックスはOMXTool [146] を利用するか、またはBandDispersionの機能(章53.4)により確認できます。

Calc.BandMax
バンドインデックスを指定することで計算するバンドの上限値を指定します。 キーワード「Calc.Bandbyband」の値がONの場合にこのキーワードは有効です(Calc.Bandbyband; Calc.BandMaxを参照してください)。 バンドインデックスはOMXTool [146] を利用するか、 またはBandDispersionの機能(53.4節)により確認できます。

MulP.Vec.Scale
スピンテクスチャを表現するベクトルを描く際の縮尺を指定します。 例えば、値「0.1 0.2 0.3」は$x$軸に0.1、$y$軸に0.2、$z$軸に0.3の縮尺を指定します。 このキーワードは「XXXXX.Pxyz_YY」のみに影響します。 (XXXXXはキーワード「Filename.outdata」の値、YYはバンドインデックス)。 デフォルト値は「1.0 1.0 1.0」です。


計算

ポストプロセスコード「kSpin」によりスピンテクスチャ及びk空間スピン密度行列が計算されます。 ここではポストプロセスコード「kSpin」はディレクトリ「work」にあると仮定して説明を行います。 ディレクトリ「work」に移動して、計算を以下のとおり実行します。

    % ./kSpin Au111Surface_FL.dat
または、MPI計算では、例えば、4MPIプロセスの場合は以下のとおり実行します。
    % mpirun -np 4 ./kSpin Au111Surface_FL.dat 

計算の進行に伴い、以下の標準出力が得られます。

    ******************************************************************
    ******************************************************************
     kSpin:
     code for evaluating spin related properties
     in momentum space of solid state materials.
     Copyright (C), 2019,
     Hiroki Kotaka, Naoya Yamaguchi and Fumiyuki Ishii.
     This software includes the work that is distributed
     in version 3 of the GPL (GPLv3).

     Please cite the following article:
     H. Kotaka, F. Ishii, and M. Saito,
     Jpn. J. Appl. Phys. 52, 035204 (2013).
     DOI: 10.7567/JJAP.52.035204.
    ******************************************************************
    ******************************************************************


    Input filename is "Au111Surface.scfout"


    Start "FermiLoop" Calculation (5).

    ########### ORBITAL DATA ##################
    ClaOrb_MAX[0]:   2
    ClaOrb_MAX[1]:   8
    Total Band (2*n): 124
    Central (  0.000000   0.000000   0.000000)
    ###########################################

    ########### EIGEN VALUE ###################
    The number of BANDs    2 (  55->  56)
    ########### CONTOUR CALC ##################
      k-height :   0   0.000000
    The number of BANDs    2 (  55->  56)
     l=  55,   k_points: 139 (array: 277)
     l=  56,   k_points: 115 (array: 229)
    Total MulP data: 254
    ###########################################

    ###########################################

    ############ CALC TIME ####################
      Total Calculation Time: 26.851349 (s)
            Eigen Value Calc:  4.277838 (s)
     l=  55:    Contour Calc: 11.349228 (s)
                   MulP Calc:  1.120379 (s)
     l=  56:    Contour Calc:  9.179602 (s)
                   MulP Calc:  0.920524 (s)
    ###########################################
    ############ CALC TIME ####################
      Total Calculation Time: 26.869150 (s)
    ###########################################


上記のとおり計算が正常に完了すると、 ディレクトリ「work」に以下の出力ファイルが生成されます。

    Au111Surface_FL.FermiSurf_53
    Au111Surface_FL.Pxyz_53
    Au111Surface_FL.FermiSurf_54
    Au111Surface_FL.Pxyz_54
    Au111Surface_FL.FermiSurf_55
    Au111Surface_FL.Pxyz_55
    Au111Surface_FL.FermiSurf_56
    Au111Surface_FL.Pxyz_56
    Au111Surface_FL.AtomMulP
    Au111Surface_FL.MulP_s
    Au111Surface_FL.MulP_p
    Au111Surface_FL.MulP_p1
    Au111Surface_FL.MulP_p2
    Au111Surface_FL.MulP_p3
    Au111Surface_FL.MulP_d
    Au111Surface_FL.MulP_d1
    Au111Surface_FL.MulP_d2
    Au111Surface_FL.MulP_d3
    Au111Surface_FL.MulP_d4
    Au111Surface_FL.MulP_d5
    Au111Surface_FL.plotexample
    Au111Surface_FL.atominfo
    temporal_12345.input


例として、以下のコマンドを実行すると、図 65に示す Au(111)表面のRashbaスピン分裂によるスピンテクスチャが得られます。 これは典型的なRashba型のスピンテクスチャです。

    % gnuplot Au111Surface_FL.plotexample


Figure 65: Au(111)表面の$\Gamma $点周りでのRashbaスピン分裂を示すスピンテクスチャ。 外側と内側はバンドインデックス55と56に対応。 ベクトルはPxyz_YYファイル「Au111Surface_FL.Pxyz_55」と「Au111Surface_FL.Pxyz_56」に記録された各k点での パウリ行列固有ベクトルによる$\sigma _x$, $\sigma _y$, $\sigma _z$の期待値。 閉じた曲線はFermiSurf_YYファイル「Au111Surface_FL.FermiSurf_55」と「Au111Surface_FL.FermiSurf_56」のそれぞれに記録された 一定エネルギー面。中心の十字点は$\Gamma $に対応。 この図はプロット例のファイル「Au111Surface_FL.plotexample」より作成。
\includegraphics[width=12.0cm]{Rashba-Fig2.eps}


出力ファイル

各出力ファイルの内容を以下に説明します。

FermiSurf_YY ファイル
このファイルは指定された一定エネルギー面上で探索されたバンド(バンドインデックスYY)のk点データを記録します。 第一、第二、第三列はそれぞれ$k_x$, $k_y$, $k_z$ 成分に対応します。単位はBohr$^{-1}$です。 第四、第五列はそれぞれバンドインデックス、エネルギー(eV単位)です。

Pxyz_YY ファイル
このファイルはFermiSurf_YYファイルに記録された各k点でのパウリ行列ベクトルの期待値のデータを記録します。 第一、第二、第三列はそれぞれ$k_x$, $k_y$, $k_z$ 成分に対応します。単位はBohr$^{-1}$です。 第四、第五列、第六列はそれぞれ$\sigma _x$, $\sigma _y$, $\sigma _z$の期待値です。 単位はBohr磁子です。

AtomMulP ファイル
このファイルはMulPCalc53.6節)により解析された原子寄与で分解されたk空間スピン密度行列 のデータを記録します。

MulP_xx ファイル
このファイルは原子寄与で分解されたk空間スピン密度行列の$xx$成分のデータを記録します。 このファイルはMulPCalc53.6で解析できます。

plotexample ファイル
このファイルはgnuplotスクリプトの例を提供します。

atominfo ファイル
このファイルは格子ベクトルとPAOの情報を提供します。

temporal_12345.input
このファイルはscfoutファイルに記録された入力ファイルのコピーです。

(オプショナル)k空間スピン密度行列の解析

MulPCalcを用いてAtomMulPファイルまたはMulP_xxファイルからk空間スピン密度行列を解析するためのデータが抽出できます。 MulPCalc の入力ファイルの例が入力ファイル「Au111Surface_FL.dat」の下部にあります。 上記の計算後にk空間スピン密度行列の解析を以下の手順で行います。

    % ./MulPCalc Au111Surface_FL.dat
MulPCalcに関するさらなる情報は53.6節も参照してください。

その他の留意点

FermiLoopに対する適切なパラメーター設定を行うために、GridCalcが利用できます。 GridCalcでは逆空間内のより広い領域の探索に基づきスピンテクスチャを描くため、その結果を踏まえて FermiLoopの適切なパラメーターが設定できます。 またキーワード「Eigen.Brent」を「OFF」に設定すると計算時間が短縮できます。 その際には、細かいメッシュを用いて精度を向上させるために キーワード「k-plane.1stStep」または「k-plane.2ndStep」の値を増加させて下さい。


next up previous contents index
Next: GridCalc: k点格子での計算 Up: k空間でのスピンテクスチャの解析 Previous: 概要   Contents   Index