本ページ中の結晶構造はVESTAによって描写されています。それ以外の画像はFPLOパッケージにより出力されたものです。VESTAについてはこちら、FPLOについてはこちらをご覧ください。本ページに関するご質問ご意見は清水まで。
"$"から始まる行はターミナル上でのコマンドを表しています。cd, mkdir, make, tarなどの基本的なコマンドの解説はここではしません。適宜ググるかChatGPTに聞くこと。
ここでは、FPLOの手本に倣って$HOME直下にインストールする。別の場所(たとえば/opt/)にインストールする場合も難しくないはず。
$ sudo apt install gfortran gcc g++ make
$ cd $HOME
$ tar -xzvf FPLO22.00-62.tar.gz
$ cd FPLO/
$ mkdir ./bin
$ cd ./FPLO22.00-62/install/
$ ./MMakefile
対話式でFPLOのインストールが続く。Fortranのコンパイラーがデフォルトではifortだがgfortranに変更。
$ cd ..
$ make
(このとき「curses.h: No such file or directory」が出たら、$ sudo apt install libncurses5-dev)(Ubuntu 22.04 LTSではデフォルトのgccがgcc11だったが、Ubuntu 24.04 LTSではgcc13になった。FPLO22をgcc13でコンパイルするとエラーが出てコンパイルできません。gcc11を使いましょう。g++、gfortranも同様。gcc12は知らん。)
$ make install
FPLO/binにパスを通す。
$ echo 'export PATH="$HOME/FPLO/bin:$PATH"' >> ~/.bash_profile
.bash_profileを読み込む.
$ source ~/.bash_profile
インストールできたか確認するために実物を見に行ってみる。
$ cd ~/FPLO/bin/
$ ls
インストールが成功していれば、実行ファイルは全て$HOME/FPLO/bin/に置かれている。色々と存在すればOK。
さらに、シンボリックリンクを作成すると良い。たとえば
$ ln -s fedit22.00-62-x86_64 fedit
$ ln -s fplo22.00-62-x86_64 fplo
などなど。こうすることで、何処からでも"fedit"や"fplo"とタイプするだけで実行できる。
QT5のインストール
$ sudo apt install qt5-dev
Ubuntu 22.04ではqt5-devが見つからない。代わりに、qmake関連のパッケージを逐一インストールする:
$sudo apt install qtcreator qtbase5-dev qt5-qmake qttools5-dev cmake
Python3のインストール
$ sudo apt install python3-dev python3-pip
$ pip3 install numpy
XFBPのインストール
$ cd ~/FPLO/FPLO21.00-61/XFBP_rel/XFBP/
pythonのバージョンが>3.8なので、makefile中の"PYCONFIG3EMBED=--embed"をuncommentする。FPLO22からは不要。
$ make clean
$ make
$ make install
(注)FPLOのバージョン<=21の場合、makeに引数"python3"が必要。
XFBPも$HOME/FPLO/bin/にインストールされる。存在するか確認
$ ls ~/FPLO/bin/xfbp
XFBPで用いたQTでXFBPが上手くインストールできたのであれば、makefileを編集する必要はない。
$ cd ~/FPLO/FPLO21.00-61/XFPLO_rel/XFPLO
$ make clean
$ make
$ make install
XFPLOも$HOME/FPLO/bin/にインストールされる。存在するか確認
$ ls ~/FPLO/bin/xplo
OpenBLASだとエラーが出るので、BLASに切り替えておく。
BLASのインストール:$ sudo apt install libblas-dev
OpenBLASからBLASへの切り替え:$ sudo update-alternatives --config libblas.so-x86_64-linux-gnuで、インストールしたBLASを選択。
$ cd ~/FPLO/FPLO21.00-61/PYTHON/
$ make
(注)バージョン<=21の場合、makeに引数"python3"が必要。
(注1)対話式で設定を行う。ここでは、Chose lapack settings? -> 1: our own copy, Chose fortran compiler? -> 1: gfortranを選んだ。
(注2)「fatal error: cblas.h: No such file or directory」が出たら、$ sudo apt install libopenblas-dev
(注3)「error: ‘F77_GLOBAL’ declared as function returning a function」なるエラーが出て行き詰まった。BLASにはいくつかの選択肢があるので、他のBLASを使ってみる。sudo update-alternatives --config libblas.so-x86_64-linux-gnuと打つと、aptでインストールしたBLASが表示される。現在はOpen BLASが使用されている。ここでは、blasに変更してみる。できた。
DFT計算では結晶構造を入力パラメーターとする。したがって、兎にも角にも結晶構造を入手する必要がある。現在では、以下のような結晶構造の入手方法が考えられる。
論文から。物質名+"crystal structure"などで検索すると良い。X線回折(XRD)などの構造解析が行われていれば、その論文で特定された結晶構造を用いることができる。参照した論文を引用すれば、信憑性も担保できる。未合成の物質であっても、熱力学安定性の評価、フォノン計算による構造力学的安定性の評価、構造最適化計算が正しく行われた理論論文があれば、その結晶構造を用いるのも妥当である。
データベースの利用。星の数ほど存在する化合物をまとめたデータベースが存在する。お試しで使うなら、無料で使えるオープンアクセス・データベースCrystallography Open Database(COD、Call of Dutyじゃないよ)などが候補に挙げられる。原論文が示されているので、適宜引用すること。より新しいデータベースとして、Materials Project の情報が検索でヒットすることがある。結晶構造とともに電子構造も示されていて便利そうに見えるが、出典元が書かれていないこと、DFTに基づいた結晶構造最適化が行われている可能性があること、DFTのパラメーターなどが書かれていないことから、私はあまり利用していない。
入手した結晶構造の可視化は、物理の理解や論文化のためにも非常に重要である。ぜひVESTAなどを用いて描写すること。
ここでは、例としてSrVO3(立方晶の理想ペロブスカイト構造)を扱う。空間群Pm-3m(No. 221)に属し、格子定数はa = b = c = 3.84Å、内部構造は以下の通りである。
Sr: 1a (0, 0, 0)
V: 1b(1/2, 1/2, 1/2)
O: 3c(1/2, 1/2, 0)
さっそくFPLO計算の準備を始めよう。FPLOを実行すると、実行ディレクトリ直下の特定の名前のファイル(=.inや=.densなど)が入力ファイルとして認識され、出力として特定の名前のファイル(+feditや+band、+dos.totalなど)が生成される。したがって、物質や計算パラメーターごとにディレクトリを作り直すのが良い。さもないと前回の計算結果に上書きされる。ここでは以下のようにディレクトリを作り、移動する。
$ mkdir SrVO3
$ cd SrVO3/
$ mkdir k121212
$ cd k121212/
まずは、FPLOの入力ファイル=.inを作成する。このファイルには特定の書式で数多のパラメーターを記載する必要がある。原理的にはテキストエディタで"手書き"することもできるが、FPLOには=.in作成ソフトfeditが用意されている。
$ fedit
以下、対話式で=.inの作成が可能である。
=.inが直下に存在しない場合、「自動で=inを生成したよ」と報告される。律儀。画面上段に「e(x)it」と記載されている。実はこれはfedit特有の操作方法を表している。このReportを閉じて次に進みたい場合は、xキーをタイプすることでexitできる。以下ではこれを「e(x)itする」などと表す。画面は、以下のようなMAIN MENUへと遷移する。
このMAIN MENUでは、DFT計算の重要なパラメーターの設定を行うことができる。さきほど自動生成された=.inファイルには既にデフォルトパラメーターが書き込まれているため、それらの値が表示されている。また、ターミナルのウィンドウサイズが小さすぎると、全メニューが表示されない。その際は矢印キーやマウスのスクロールで下のメニューも表示できる。試しに「Number of iterat.」を30から200に変更してみよう。この値は、電子密度に関するDFTの主要ループの繰り返し回数である。画面上で相当する場所を見ると、"N"が色付けされ括弧で囲われている。したがって、これを選択するにはnキーをタイプする。すると、現在の「Number of iterat. : 30」が暗転し、編集可能になる。キーボードで200に変更する。Enterキーで確定できる。他にも交換相関関数の選択、kメッシュの設定、収束条件、相対論効果の設定などが可能である。該当する文字列のうち色付き・括弧囲いされている文字のキーをタイプすれば、同様に設定できる。各項目に関する説明は、hキーをタイプしてヘルプを開くことで確認できる。
さて、重要な結晶構造の設定を行おう。MAIN MENUの最上段に「(+) Symmetry」と表示されている。これが結晶構造設定の入り口である。+キーをタイプ。すると、以下のようなSYMMETRY MENUに遷移する。
デフォルトでは、単体アルミニウムの結晶構造が設定されている。これをSrVO3に変更してゆこう。項目の選択方法やパラメーターの確定方法はMAIN MENUと同様である。キーをタイプして選択、変更、Enterキーで確定。以下のように変更する。
↓空間群の設定。以下のような230種の結晶空間群から選択する。選択するには空間群の番号「221」を連続でタイプする(なお「22」で止めると22番目の空間群が選択される)。目的の空間群 (221) Pm-3mが選択され、左側の括弧内に*が表示されたら、この画面を出るためにe(x)it。
さて、結晶構造の設定が終わったら、+キーをタイプして設定を反映(Update)させる。色々と警告が出力される。ここで行った変更は対称操作や他の設定に大きな影響を及ぼすためである。警告を一応確認したら、e(x)it。SYMMETRY MENUに戻されるので、もう一度e(x)it。(なお、変更したのにUpdateをせずe(x)itしようとすると、画面下部で「ほんまにええんか?」と聞かれる。y/nで本当にe(x)itするか否かを決定する。)さて、画面はMAIN MENUに戻ってきたはずである。これで全ての設定が終了した。画面上段に目をやると、「(Q)uit/save」なる表記がある。saveしてfeditを終了しよう。"q"キーをタイプ。すると、(ぱっと見は何も変わらないが)画面下段に以下のような質問が表示される。
これまでの設定変更を保存したいので、"y"をタイプ。すると、変更した設定が=.inファイルに保存され、feditが終了する。本当に入力ファイルが作成されたのか確認したければ、lsコマンドを実行する。おそらく以下の3つのファイルが存在しているはずだ;+fedit, =.in, =.in.bak。+feditは再度feditを実行する際に読み込まれる入力ファイルであるが、ぶっちゃけ=.inだけあれば十分である。 本当に先ほどの設定が=.inに反映されているのか心配なら、再度feditを実行すれば良い。変更したパラメーターが表示されるはずだ。もしくは、Vimなどのテキストエディタを使って=.inを直接開いてみると良い。なお、feditを使わない=.inの直接編集は推奨されていない。しかし、パラメーターを変化させながら多くの計算を行う場合は、効率化・自動化の観点から、直接編集することも多い。
先ほど作成した=.inを入力としてxfploを実行することで、設定した結晶構造を描写することができる。
$ xfplo =.in
=.inの作成が正しくできているか確認するという意味でも描写してみると良い。
では早速FPLOを実行し、DFT計算を回していこう。=.inが直下にある状態でfploコマンドを実行するだけである。ただし、莫大な情報が全て標準出力されるので、これをファイルfplo.outにリダイレクトしておこう。
$ fplo > fplo.out 2>&1
数十秒ほどでDFT計算が終了する。全エネルギーや電子数、収束状況などの重要な情報はfplo.outにリダイレクトされている。この計算では数千行の出力がされているはずである。moreコマンドや、vimなどのテキストエディタを使って出力全体を確認することができるが、面倒なのでgrepコマンドを使って効率的に情報の取捨選択をしよう。まずは収束状況を確認する。自己無撞着(SCF)ステップごとに、電子密度の前回からの差分が"last deviation"から始まる行として出力されているので、これをgrepすれば良い;
$ grep "last deviation" fplo.out
すると、SCFステップが進むごとに差分が小さくなり、やがて収束する様子が見てとれる。最終行で"CONVERGED"と出力されていれば、SCF計算が収束したことを示している。もしfeditで設定した反復数内で収束しなかった場合は、"NOT CONVERGED"と出力される。
また、テキストエディタでfplo.outを開き、"Population Analysis"から始まるブロックを見れば、各軌道の占有数を確認できる。
さて、このFPLO実行により生成されたファイルをlsコマンドで確認してみよう。"=."から始まる名前のファイルはfeditやFPLO実行時に読み込まれるファイルで、"+"から始まる名前のファイルは出力ファイルである。=.densには本計算最終ステップでの電子密度が格納されている。このファイルが直下にある場所でFPLOを実行すると、初期電子密度として読み込み、DFT計算が再スタートできる。+symmetryにはFPLOが行った対称操作に関する情報が出力されている。
問)以下の手順に従い、立方ペロブスカイト酸化物SrVO3の価電子(フェルミ準位近傍の低エネルギー自由度)を化学的に予想せよ。
1) SrおよびOの典型的な形式価数を用い、電荷中性条件からVの形式価数を求めよ。
2) 得られた形式価数をもとに、各イオンの最外殻電子の個数を軌道ごとに推定せよ。
3) SrVO3の価電子を主に構成すると考えられるのは、どのイオンのどの軌道か答えよ。
4) 立方ペロブスカイトSrVO3において、Vはどのような配位環境(配位多面体)にあるか。
5) 4) の配位環境における3d軌道の結晶場分裂を模式的に示せ。
6) 以上の結果を踏まえて、フェルミ準位近傍で部分占有になり得る主な軌道(元素名と軌道名)を答えよ。
7) 標準出力ファイルfplo.outには占有数解析「Population Analysis」が含まれている。ここからV-3dのN_grosを読み取り、形式的なd^1と比較せよ。さらに、V–O の混成(p–d hybridization)および population の定義(電子密度の割り振り)を踏まえて、なぜ V-3d の占有が形式値より大きくなり得るかを定性的に説明せよ。なお、FPLOのN_grosは局在基底への投影に基づくMulliken型の占有数であり、多軌道との混成の影響を強く受ける。
8) V-3d のN_grosが形式的な3d^1より大きいことは、V–O 結合のイオン性と共有結合性のどちらが相対的に強いことを示唆するか。p–d 混成の観点から説明せよ。
(補足)DFTにおける"占有数"とFPLOのN_gros
DFTにおける「軌道占有数」は基底(投影の取り方)に依存する解析量であり、直接観測される物理量ではない。そのため、占有数は形式電子数と一致する必要はなく、また異なるDFTパッケージ間での直接比較も一般に容易ではない。
本設問では、占有数を「絶対値」として扱うのではなく、どの軌道がフェルミ準位近傍の低エネルギー自由度になり得るか、形式価数との比較から混成(共有結合性)の強さをどの程度示唆するか、を議論する目的で用いる。
FPLO の Population Analysis における Excess electrons は原子ごとの電子の過不足を表す指標であり、形式価数との比較で「電荷の再分配」の傾向を把握できる。ただし、結晶全体としては電荷中性条件が保たれるため、Excess electrons の総和は 0 となる。
先ほどのSCF計算が収束し本質的にはDFT計算は完了した。しかしながら求めたのは電子密度とその他基本的な物理量のみである。収束時の=.densを用いてDFT計算を1ループのみ再開することで(すでに収束している電子密度を用いれば次のステップでもほぼ同じ電子密度が得られる)、いろいろな物理量を計算することができる。そのための設定変更を再度feditで行う。
$ fedit
まず、MAIN MENUからNumber of iterat.を1に変更。続いて、Spaceキーをタイプしサブメニューを開く。項目は画面下段に表示される。一番左のBandplotを選択。Bandstructure plotを選択し、これをONにする。これでバンドやDOSが計算される。さらに下部ではバンド・DOS計算時のエネルギー窓、点数、kパス、軌道解析などの設定ができる。ここでは、「Number of e(-)pts (non-CPA)」を1001に変更して、残りはデフォルト値のまま計算してみる。e(x)it。MAIN MENUに戻ったら、(Q)uit/save、保存して終了。
さて、再計算を実行しよう。また大量の情報が標準出力されることになる。これをfplo.outに再度リダイレクトすると、さきほどの収束に向かう情報が失われてしまう。そこで、収束に向かったSCF計算のfplo.outはfplo.out.bakとしてコピーしておくことをおすすめする。
$ cp fplo.out fplo.out.bak
そして、FPLOの再実行。
$ fplo > fplo.out 2>&1
1ループしか走らせないので、数秒で終わるはずだ。lsコマンドで生成されたファイルを確認してみよう。今回はバンド・DOS計算をONにしたので、それに応じた出力ファイルが生成されているはずだ。+bandには設定したkパスに沿ったバンド分散が出力されている。dat形式で、1列目にパス上の座標、2-N列目にはエネルギー値が格納されている。+dos.totalにはDOSが出力されている。1列目にフェルミ準位を基準としたエネルギー(eV)、2列目にDOS(states / eV / f. u.)が格納されている。+dos.sort00*には各Wyckoff位置ごとのDOSが格納されている。番号は=.in中で設定したWyckoff位置のインデックスに一致している。+dos.sort00*.nl00*には、各Wyckoff位置におけるDOSを電子軌道nlで分解したものが出力されている。どの軌道に相当するのかは、1行目にコメント行として出力されている。
$ head +dos.sort002.nl005
すると、このファイルがsort = 2, nl = 3dのDOSであることがわかる。2番目のWyckoff位置にはVを配置していた。したがって、+dos.sort002.nl005にはVの3d軌道のDOSが格納されていることがわかる。
前述のように、+bandや+dos.totalなどもdat形式であるから、gnuplotなどで描写可能である。論文用の図などはGnuplotスクリプトを用意するなどして、綺麗にプロットすべきである。一方、とりあえず結果を描写したい時などはxfbpが便利である。
$ xfbp +band
高対称点やラベルなどを自動で出力してくれる。マウスを使って見た目の調整もできる。
$ xfbp +dos.total
これでDOSがプロットできる。FPLOではフェルミ準位を基準(E = 0)としてエネルギーが表される。フェルミ準位に有限のDOSが存在し金属状態が得られる。実際のSrVO3も金属である。
問)DFTで得られたDOSから電子比熱係数(Sommerfeld係数)を推定し、測定値と比較せよ。
答)電子比熱係数は
gamma_band = PI^2 / 3 * k_B^2 * DOS(E_F)
で算出される。なお、このDOSは全スピン込みのDOSである。FPLOで得られるDOSの単位は[states/eV/f.u.]の一方で、実験で用いられる比熱係数の単位は[mJ/mol K^2]である。この単位変換も含めて上式を書くと、
gamma_band [mJ/mol K^2] = 2.359 * DOS(E_F) [states/eV/f.u.]
となる。さて、+dos.totalからDOS(E_F)を取得しよう。テキストエディタで開いて目視で探しても良いが、grepコマンドが全てを解決する。
$ grep " 0.000000000000000E+000 " ./+dos.total
DOS(E_F) = 1.597 states/eV/f.u.が得られる。よって、gamma_band = 3.77 mJ/mol K^2と見積もれる。
一方、実験で測定されている係数は8-9 mJ/mol K^2とGGAの見積もりの2-3倍程度である。すなわち、GGAは電子比熱係数を過小評価している。この過小評価は、GGA が電子相関効果を十分に取り入れておらず、準粒子の有効質量の増大(質量繰り込み)を再現できないことに起因する。実験で観測される比熱係数の増大は、V 3d 電子の中程度に強い電子相関によるものであり、これは DFT+DMFT などの多体効果を含む理論で初めて定量的に説明される。
Partial DOSを一緒にプロットしてみよう。どの軌道がどのエネルギー領域に分布しているのかが見て取れる。特に先ほど予測した価電子を確かめてみよう
$ xfbp +dos.total +dos.sort*.nl*
で全てのpartial DOSをプロットしてみても良い。xfbpは全てを優しく受け止めて(自動で軌道などを読み取り凡例を作成して)くれる。特に、
$ xfbp +dos.total +dos.sort002.nl005
すると以下のような図が得られる。フェルミ準位近傍のエネルギー分散はV 3d軌道が形成していることがわかる。
V-3d軌道の結晶場分裂の様子を確認してみよう。feditを実行してサブメニューからBANDPLOTメニューを再度開く。まず、(W)eightsを選択してONにする。これでバンド空間での軌道のウェイトを計算してくれる。また、Local (D)OS sitesを選択し、"2"を設定する。これで2番目の原子(すなわちV)のLDOSを計算してくれる。ちなみにLocal DOS sitesの指定にはWyckoff位置ではなく原子サイトの番号を使用する点に注意。fplo.out内で"Atom sites"から始まるブロックで確認できる。複数指定する場合は、スペースで区切る。さて、これで設定完了。e(x)it -> (Q)uit/save ->yでfeditを終了。
$ fplo > fplo.out 2>&1
数秒で終わるはず。lsコマンドで生成ファイルを確認。今回の計算では+bweightsや+ldos.***が追加生成されている。それぞれバンドの軌道ウェイトとLDOSが格納されている。まずはLDOSをプロットしてみよう。
$xfbp +ldos.site002.nl005
本来5つの軌道が存在するはずだが、LDOSの線は2種類しか見えない。線の太さやactive/inactiveなどを調整して観察してみよう。適当な箇所で描写線をダブルクリックすることで、その設定が開ける。なお、FPLOで用いられる球面調和関数Y_{l, m}は実球面調和関数である。特にd軌道(l = 2)では、Y_{2,-2} ∝ xy, Y_{2,-1} ∝ yz, Y_{2,0} ∝ z^2, Y_{2,1} ∝ xz, Y_{2,2} ∝ x^2-y^2となる。したがって、m = -2, -1, 0, 1, 2はそれぞれd_{xy}, d_{yz}, d_{z^2}, d_{xz}, d_{x^2-y^2}軌道に対応している。(詳細はマニュアル6.2.3を参照。)
問)3d_{xy}, 3d_{yz}, 3d_{z^2}, 3d_{xz}, 3d_{x^2-y^2}軌道はどのように分裂しているか?低エネルギー側は何重縮退で、高エネルギー側は何重縮退か?先ほどの結晶場分裂の予測と一致しているか?
続いてバンド軌道ウェイトを描写してみよう。
$ xfbp +bweights
おそらくただのバンド分散が描写される。適当なバンドをダブルクリックし、描写設定を開く。左のリストの最上段"Group 1"を選択。右側のタブから"Weights"を選択。Tiの5個の3d軌道すべてにチェックを入れる。下側のボタンをApply -> Close。すると、バンド上に色が付く。厳密には、各色の円の大きさで軌道ウェイトが描写される。この描写でもm = -2, -1, +1軌道が低エネルギー側に分散を持っていることがわかる。
xfploを使うとフェルミ面の計算・描写が可能。念の為(ある入力ファイルが存在するか否かでFPLOの挙動が変わる使用のためディレクトリを使い分けるのが吉)、フェルミ面 (fs)専用のディレクトリ内を作り、=.inおよび=.densをコピーする。ここでfsモードのxfploを軌道する。
$ cd ../
$ mkdir k121212_fs
$ cd k121212_fs/
$ cp ../k121212/=.in ../k121212/=.dens ./
$ xfplo -fs
すると、以下のように表示される。
さて、FPLOは実行時に直下に=.kpという名前のファイルが存在すると、そのファイル中に書かれたk点でエネルギーを計算する仕様になっている。このXFPLO(fsモード)で=.kpの作成・FPLOの実行・フェルミ面の描写が全て行える。
1. 左から4番目のメッシュを模したアイコンをクリック。
2. ポップアップ内の"Subdivision"でメッシュのk点数を選べる。とりあえず32に変更して、"OK"をクリック。「今すぐkメッシュを出力しまっか?」と聞かれるので"Yes"。
3. 他にも色々聞かれるので全部"Yes"。この描写設定ファイルの保存名を決める。ここではデフォルトの=.xefにししておく。
4. 「いますぐFPLOを回しますか?」と聞かれるので"Yes"。FPLO実行用ダイアログが表示される。"Run"をクリックしてFPLO計算をスタート。計算中にボックス内に表示されるのはFPLOの標準出力で、これまではfplo.outにリダイレクトしていた内容である。最後に"finished"の行が表示されると終了。(おそらく数秒ほど)FPLO実行中は"Run"が押せなく(灰色に)なっているので、見ればわかるはず。計算が終了したら"Close"。
5. 先ほどのFPLOで計算したのはあくまでkメッシュでのエネルギー固有値。フェルミ面(E = 0のk点)を探すには補完などをXFPLOが行う必要がある。"Do you want to recalculate the sceene now?"と聞かれているはずだ。"Yes"と答える。
6. フェルミ準位に掛かっているバンドが算出され表示される。描写したいフェルミ面のバンドを選ぶ。とりあえず全部を選択。"OK"をクリック。
デフォルトで表示されている色はフェルミ速度である。単一な色使いに変更したければ、ツールバーから"Plot" -> "Colors"を開き、"single color"を選択して色を選べばよい。(ここでは変更しない。)また、この"Colors"から軌道ウェイトをフェルミ面上にカラープロットすることも出来る。詳細は清水へ。
=.xefファイルの上書き保存、画像出力などは上部アイコンから可能。"Γ"と表示されているアイコンは、高対称点やkパスの表示に関するアイコン。
デフォルトで表示されている立方体は第1ブリルアンゾーン。矢印はConventional Unit cellの格子ベクトルの方向を表している。Primitive cellへの切り替えや表示・非表示の切り替えは、ツールバーから"Plot" -> "Display cells"を選択する。
問)得られたフェルミ面をARPESなどの実験結果と比較せよ。フェルミ面は非常に良く一致していることがわかる。前述したように有効質量は過小評価しているものの、フェルミ面はよく再現できている。したがって、全体のバンド幅は過大評価しているが、フェルミ面近傍の物理はよく説明できることが期待される。(eg. スピンゆらぎ、超伝導、etc.)
問)得られたフェルミ面はa軸、b軸、c軸方向に伸びる3本の円筒を互いに直行させた上で混成を取り入れたような形状である。これは何故か?結晶構造から議論せよ。(ヒント:フェルミ準位に掛かっているのはt2g(3d_{xy/yz/xz})軌道である。実空間ではこの3d軌道間の運動は酸素の2p軌道を介したものとなる。)
FPLOには以下の機能も含まれている;1) Wannier関数の構築、2) 構築したWannier基底間の飛び移り積分の計算。Wannier関数の設定には=.wandefファイルを用いる。この名前のファイルが直下に存在すると、FPLOは自動的にWannier関数の構築を行う。これまで扱ってきたSrVO3の有効タイトバインディング模型を構築する。さきほど描写したように、フェルミ準位の周辺-1 eV < E - Ef < 1 eVはt2g軌道がほぼ全てのウェイトを占めている。さらにその3軌道の重みをバンド上でプロットすると、3バンドの上で3軌道が閉じているように見える。すなわち、この3つのt2g軌道とその他のバンド混成は極めて小さく、t2g軌道のみで有効模型が構築できると考えられる。この3つのWannier軌道を記述した=.wandefファイルを用意する。
$ cd ../
$ mkdir k121212_wf
$ cd k121212_wf/
$ cp ../k121212/=.in ../k121212/=.dens ./
$ fplo > fplo.out 2>&1
この1回目のFPLO実行によって=.wandefが読み込まれ、Wannier関数の構築が行われる。構築されたWannier関数(の変換係数)は+wancoeffファイルに格納される。+wancoeffファイルが直下にある状態でもう一度
$fplo > fplo.out 2>&1
を実行すると、先ほど構築したWannier関数からエネルギー分散、飛び移り積分、飛び移り積分から構築したタイトバインディング模型のエネルギー分散などが計算される。特に得られた3パターンのエネルギー分散:DFTのエネルギー分散、Wannier基底のエネルギー分散、タイトバインディング模型のエネルギー分散の3つを重ねてプロットすることで、構築したWannier関数およびタイトバインディング模型の正当性を確かめよう。
$ xfbp +band +wanband +wanbandtb &
今回の SrVO3の場合、事前の化学的見立てどおり 3 つのt2g軌道を基底としたタイトバインディング模型は良い近似となっており、構築されたバンド図は DFT の結果をフェルミ準位近傍で良好に再現している。一方で、=.wandef 内における エネルギー窓の設定が不適切であったり、Wannier 化の閾値(収束条件)が厳しすぎる/緩すぎる場合には、得られるタイトバインディングバンドが DFT のバンド図と一致しないことがある。そのような場合には、パラメータを調整した上で +wancoeff ファイルを削除し、FPLO を再度 2 回実行する必要がある。また、対象物質によっては、t2g軌道以外の軌道(例:eg、配位子 p 軌道など)との混成が無視できない場合もある。そのような系では、t2gのみを基底とした模型では DFT バンドを再現できないことがあり、その場合には (i) 有効模型として割り切って使用するか、(ii) 他の軌道も Wannier 基底に明示的に加えるか、などを検討し、試行錯誤しながら適切な有効模型を構築する必要がある。
(注)t2g-Wannier軌道の意味について
ここで定義したt2g-Wannier軌道は、Vサイト上に中心を持つWannier軌道であり、孤立したVイオンの原子軌道としてのt2g軌道と一致するものではない。これらのWannier軌道は、指定したエネルギー窓に含まれるバンド部分空間をもとに、t2g対称性を持つ状態へと最適化された基底である。そのため、構築されるタイトバインディング模型にはO-2p軌道は明示的には含まれていないが、Wannier化によるdownfoldingの結果として、d-dの飛び移り積分にはd-p-dの2次過程の結果がすでに織り込まれている。この意味で、本模型はV-Oのd-p混成を無視したものではなく、低エネルギー自由度に対してその結果を有効的に取り込んだ模型となっている。
肝心の飛び移り積分(ホッピングパラメーター)は、標準出力されfplo.outにリダイレクトされている。vimなどのエディタでfplo.outを開き、"spin 1: WF"を検索。読めることは読めるが、このパラメーターを自作のプログラムで読み込むのは骨が折れる。そこでこのfplo.outをWannier90形式ファイルに変換するツールfplo2wannier90が清水によって開発されている(おそろしく早い宣伝...)。使ってみたい方は清水まで。