ポストプロセスコード「kSpin」にはk空間スピン密度行列を計算する4つの方法があります。 これはキーワード「Calc.Type」で指定します。 ここでは4つの方法のうち、MulPOnlyを説明します。 MulPOnlyの機能を用いて指定するk点とバンドに対してk空間スピン密度行列を計算できます。 MulPOnlyとMulPCalcを用いたスピンテクスチャの解析例としてAu(111)表面のモデルをここで説明します。 まず、ディレクトリ「work」中に収容された入力ファイル「Au111Surface_MO.dat」を用いてOpenMX計算を実行します。 次に、MulPOnlyの機能を用いてスピンテクスチャを計算できます。 「kSpin」の実行に関連するキーワードを以下に列挙します。 これらのキーワードは入力ファイル「Au111Surface_MO.dat」中に記載されています。 また入力ファイル「Au111Surface_MO.dat」はディレクリ「work」中に収容されています。
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点で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: 1MulPCalcを実行後に、ディレクトリ「work」に以下の出力ファイルが得られます。
Au111Surface_MO_MC.MulPop Au111Surface_MO_MC.MulPop55 Au111Surface_MO_MC.MulPop56 Au111Surface_MO_MC.plotexample例として、以下のコマンドを実行すると、図 68が得られます。 これはAu(111)表面のラシュバスピン分裂のスピンテクスチャを表示したものです。
% gnuplot Au111Surface_MO_MC.plotexampleMulPCalcに関するさらなる情報は53.6節も参照してください。
|