next up previous contents index
Next: MulPCalc: 原子ごとに分割されたk空間スピン密度行列 Up: k空間でのスピンテクスチャの解析 Previous: BandDispersion: バンド分散関係の計算   Contents   Index

MulPOnly: 利用者指定のk点での計算

ポストプロセスコード「kSpin」にはk空間スピン密度行列を計算する4つの方法があります。 これはキーワード「Calc.Type」で指定します。 ここでは4つの方法のうち、MulPOnlyを説明します。 MulPOnlyの機能を用いて指定するk点とバンドに対してk空間スピン密度行列を計算できます。 MulPOnlyMulPCalcを用いたスピンテクスチャの解析例としてAu(111)表面のモデルをここで説明します。 まず、ディレクトリ「work」中に収容された入力ファイル「Au111Surface_MO.dat」を用いてOpenMX計算を実行します。 次に、MulPOnlyの機能を用いてスピンテクスチャを計算できます。 「kSpin」の実行に関連するキーワードを以下に列挙します。 これらのキーワードは入力ファイル「Au111Surface_MO.dat」中に記載されています。 また入力ファイル「Au111Surface_MO.dat」はディレクリ「work」中に収容されています。

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

    Filename.scfout       Au111Surface.scfout 
    Filename.outdata      Au111Surface_MO     
    Calc.Type             MulPOnly             # FermiLoop, GridCalc,
                                               # BandDispersion, or MulPOnly 
                                               # default: MulPOnly
    Filename.kpointdata   kpoint.in

加えて、キーワード「Filename.kpointdata」で指定される名前のもう一つの入力ファイルが必要です。 このファイルにはk空間スピン密度行列を計算するk点を記述します。 設定ファイルの例として、ディレクトリ「work」中にファイル「kpoint.in」が収容されています。 そのフォーマットは以下の規則に従います。 第一行にk空間スピン密度行列を計算するk点の数を指定します。 次に、k点(第一、第二、第三列がそれぞれ $k_x$, $k_y$, $k_z$に対応)とそのバンドインデックス(第四列)を指定します。 逆空間の$\Gamma $点を中心とする円周上のk点でk空間スピン密度行列を計算する場合には、 以下のコマンドを実行することで「kpoint.in」を生成できます。

  rm -f kpoint.in && awk '{for (i=0; i<$1; i++){printf "%17.14f %17.14f %17.14f %d\n", 0, $2*cos(2*atan2(0, -1)/$1*i), 
  $2*sin(2*atan2(0, -1)/$1*i), $3 >> "buffer"}; sum+=$1; if (!$1) {print sum; exit}}' - > N.in && cat N.in buffer >> kpoint.in && rm N.in buffer
その後で, 次の値を入力して下さい。
                                                                                                                          
 40 0.18 55          <- # of k-points; radius; band index                                                                  
 40 0.15 56          <- # of k-points; radius; band index                                                               
 0                   <- exit
この手続きが正常に終了すると「kpoint.in」が生成されます。 「kpoint.in」には以下の情報が保存されていますので、確認して下さい。
                                                                                                                          
  % cat kpoint.in                                                                     
    80                                                                                 
    0.00000000000000 0.18000000000000 0.00000000000000 55                             
    0.00000000000000 0.17778390130712 0.02815820370724 55                            
    0.00000000000000 0.17119017293313 0.05562305898749 55                           
    0.00000000000000 0.16038117435391 0.08171828995312 55                          
    0.00000000000000 0.14562305898749 0.10580134541265 55                         
    0.00000000000000 0.12727922061358 0.12727922061358 55                        
    0.00000000000000 0.10580134541265 0.14562305898749 55                       
    0.00000000000000 0.08171828995312 0.16038117435391 55                      
    0.00000000000000 0.05562305898749 0.17119017293313 55                     
    0.00000000000000 0.02815820370724 0.17778390130712 55                    
    0.00000000000000 0.00000000000000 0.18000000000000 55                   
    0.00000000000000 -0.02815820370724 0.17778390130712 55                 
    ...                                                                   
    ..

キーワードの仕様

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

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

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

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

Filename.kpointdata
k点とバンドインデックスのデータファイルの名前を指定します。

計算

ポストプロセスコード「kSpin」により原子ごとに分解されたk空間スピン密度行列が計算されます。 ディレクトリ「work」に移動して、計算を以下のとおり実行します。

    % ./kSpin Au111Surface_MO.dat
または、MPI計算では、例えば、4MPIプロセスの場合は以下のとおり実行します。
    % mpirun -np 4 ./kSpin Au111Surface_MO.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 "MulPOnly" Calculation (6).  

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

    ############ CALC TIME ####################
      Total Calculation Time:  0.642631 (s)
    ###########################################
    ############ CALC TIME ####################
      Total Calculation Time:  0.660566 (s)
    ###########################################

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

    Au111Surface_MO.AtomMulP
    Au111Surface_MO.MulP_s
    Au111Surface_MO.MulP_p
    Au111Surface_MO.MulP_p1
    Au111Surface_MO.MulP_p2
    Au111Surface_MO.MulP_p3
    Au111Surface_MO.MulP_d
    Au111Surface_MO.MulP_d1
    Au111Surface_MO.MulP_d2
    Au111Surface_MO.MulP_d3
    Au111Surface_MO.MulP_d4
    Au111Surface_MO.MulP_d5
    Au111Surface_MO.atominfo
    temporal_12345.input

出力ファイル

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

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

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

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

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

原子ごとに分解されたk空間スピン密度行列の解析

MulPCalcを用いてAtomMulPBandファイルまたはAMulPBand_xxファイルから原子ごとに分解された k空間スピン密度行列を解析するためのデータが抽出できます。 ディレクトリ「source」中で以下のようにコンパイルし、実行ファイルを作成して下さい。

    % make MulPCalc
コンパイルが成功すると、実行ファイル「MulPCalc」がディレクトリ「work」に生成します。 一例として、Au(111)表面のRashbaスピン分裂のバンド分散に着目し、原子寄与に分解されたk空間スピン密度行列を解析します。 最初に、以下のキーワードを入力ファイル「Au111Surface_MO.dat」に追加します。
    Filename.atomMulP Au111Surface_MO.AMulPBand   # default: default
    Filename.xyzdata   Au111Surface_MO_MC         # default: default
    Num.of.Extract.Atom        3                  # default: 1
    Extract.Atom               1 2 3              # default: 1 2 ... (Num.of.Extract.Atom)
    Calc.Type.3mesh            2                  # default: 1
ポストプロセスコード「kSpin」による計算後に、原子寄与に分解されたk空間スピン密度行列を以下のように解析できます。
    % ./MulPCalc Au111Surface_MO.dat
加えて、以下のキーワードを設定することで、図の見た目を調整することができます。
    MulP.Vec.Scale       0.1  0.1  0.1          # default: 1.0  1.0  1.0
    Data.Reduction             1                # default: 1
MulPCalcを実行後に、ディレクトリ「work」に以下の出力ファイルが得られます。
    Au111Surface_MO_MC.MulPop
    Au111Surface_MO_MC.MulPop55
    Au111Surface_MO_MC.MulPop56
    Au111Surface_MO_MC.plotexample
例として、以下のコマンドを実行すると、図 68が得られます。 これはAu(111)表面のラシュバスピン分裂のスピンテクスチャを表示したものです。
    % gnuplot Au111Surface_MO_MC.plotexample
MulPCalcに関するさらなる情報は53.6節も参照してください。


Figure 68: Au(111)表面のRashba分裂に対する $\Gamma $-点周辺のスピンテクスチャ。 外側と内側のスピンテクスチャはそれぞれ55番と56番のバンドに対応。 ベクトルはMulPopファイル「Au111Surface_MO_MC.MulPop」に記録された各k点での パウリ行列固有ベクトルによる $\sigma _x$, $\sigma _y$, $\sigma _z$ の期待値。 この図はプロット例のファイル「Au111Surface_MO_MC.plotexample」より作成。
\includegraphics[width=10.0cm]{Rashba-Fig-MulPOnly.eps}