Quantum-ESPRESSOでの交換相関汎関数の指定方法

# はじめに
Kohn-Sham密度汎関数理論 (DFT) における交換相関汎関数は近似の種類によって、一般的には以下のように分類できるでしょう。
- 局所密度近似 (LDA)
- 一般化勾配近似 (GGA)
- メタ一般化密度勾配近似 (meta-GGA)
- ファンデルワールス密度汎関数 (vdW-DF)
- ハイブリッド交換相関汎関数 (hyb)

これに加えて分散力補正DFT（dispersion corrected DFT）もあります。

DFT計算プログラムの一つであるQuantum-ESPRESSOには数多くの交相関汎関数が実装されていますが、それらの指定方法はマニュアルには詳しく記述されていないように思います。
この文書では代表的な交換相関汎関数の指定方法を記述します。

# 入力変数
入力ファイルの``&sysmte ... /``において``input_dft``という変数を以下のように明示的に指定します。
```
input_dft='pbe'
```
この例では交換相関汎関数としてPBEを指定しています。
``input_dft``を明示的に指定しない場合、交換相関汎関数は擬ポテンシャルを生成する際に使用したもの（UPFファイルに記載）が使用されます。

## 使用可能な交換相関汎関数と変数名
以下に代表的な汎関数と変数名を示します。すべてのリストはQuantum-ESPRESSOのソースディレクトリ以下の``Modules/funct/``に含まれる``funct.f90``に記載してある``short name``を参照して下さい。
### LDA

| input_dft | Exchange-correlation functional |
| --- | --- |
| pz   | Perdew-Zunger |
| vwn  | Vosko-Wilk-Nusair |
| hl   | Hedin-Lundqvist |
| gl   | Gunnarsson-Lundqvist | 
| pw   | Perdew-Wang |

### GGA

| input_dft | Exchange-correlation functional |
| --- | --- |
| bp     | Becke-Perdew |
| pw91   | Perdew-Wang '91 |
| blyp    | BLYP |
| pbe   | Perdew-Burke-Ernzerhof |
| revpbe  | Zhang-Yang |
| rpbe    | Hammer-Hansen-Norskov |
| pbesol  | PBEsol |
| wc      | Wu-Cohen |

### hyb

| input_dft | Exchange-correlation functional |
| --- | --- |
| pbe0 | PBE0 |
| b3lyp | B3LYP |
| hse | HSE06 |
| gaupbe | Gau-PBE |
### vdW-DF

| input_dft | Exchange-correlation functional |
| --- | --- |
| vdw-df | vdW-DF1 |
| vdw-df-c09 | vdW-DF-C09 |
| vdw-df-obk8 | optB88-vdW |
| vdw-df-ob86 | optB86b-vdW |
| vdw-df-cx   | vdW-DF-CX   |
| vdw-df2 | vdW-DF2 |
| vdw-df2-c09 | vdW-DF2-C09 |
| vdw-df2-b86r | rev-vdW-DF2 (vdW-DF2-B86R) |
| vdw-df3-opt1 | vdW-DF3-opt1 |
| vdw-df3-opt2 | vdW-DF3-opt2 |
| vdw-df-C6   | vdW-DF-C6   |
| rvv10 | rVV10 |

### meta-GGA

| input_dft | Exchange-correlation functional |
| --- | --- |
| tpss | TPSS |
| m06l | M06-L |
| scan | SCAN |
| r2scan | r2SCAN |

### Dispersion-corrected meta-GGA

| input_dft | Exchange-correlation functional |
| --- | --- |
| rvv10-scan | SCAN-rVV10 | 

### Hybrid meta-GGA

| input_dft | Exchange-correlation functional |
| --- | --- |
| sca0 | SCAN0 |

### Hybrid vdW-DF

| input_dft | Exchange-correlation functional |
| --- | --- |
| vdw-df-cx0   | vdW-DF-CX-0   |
| vdw-df2-br0 | vdW-DF2-B86R-0 |
| vdw-df-c090 | vdW-DF-C09-0 |
| vdw-df-ahcx | vdW-DF-AHCX |
| vdw-df2-ahbr | vdW-DF2-AHBR |

### Other

| input_dft | Exchange-correlation functional |
| --- | --- |
| BEEF | BEEF-vdW |
| beef-vdw | BEEF-vdW |

### Dispersion-corrected DFT

GGA/meta-GGA汎関数に半経験的分散力補正を加えるには``&SYSTEM``ブロックの中で``vdW_corr``というキーワードを使用します。
例えば

```
vdW_corr = 'DFT-D3'
```
と入力するとGrimmeのDFT-D3 (zero damping) が使用されます。

GrimmeのDFT-D2、DFT-D3 (zero-damping, BJ damping)、Tkatchenko-Scheffler（TS）vdW補正、Many-body dispersion (MBD)、Exchange-hole dipole-moment (XDM)法が使用可能です。これらは``pw.x``のマニュアルに記載されていますので、ここでは省略します（今後この文書をアップデートする可能性はあります）。

半経験的分散力補正の場合、FT汎関数に依存するs6と呼ばれるパラメータがあり（``london_s6``）、デフォルトは0.75ですが、s6が決定されていない汎関数が存在するので注意が必要です。例えばGrimmeのDFTD3プログラムではDFT-D2についてs6は以下のような値が使われているようです。

|Exchange-correlation functional|s6 (DFT-D2)|
|---|---|
| BLYP | 1.2 |
| B97 | 1.25 |
| revPBE | 1.25 |
| PBE | 0.75 |
| TPSS | 1.0 |
| B3LYP | 1.05 |
| PBE0 | 0.6 |
| TPSS0 | 0.85 |

DFT-D3に関しては``dft-d3``ディレクトリ以下にある``core.f90``に記載があります。DFT-D3ではすべての汎関数について$s_6 = 1$が使われ、汎関数毎に$s_{18}$などのパラメータが決定されています。

# 出力ファイルの記載

計算に用いる擬ポテンシャルを生成する際に使用された汎関数とSCF計算で使用される汎関数が違う場合、出力ファイルには以下のようなメッセージが出力されます。
```
     IMPORTANT: XC functional enforced from input :
     Exchange-correlation= RPBE
                           (   1   4  44   4   0   0   0)
     Any further DFT definition will be discarded
     Please, verify this is what you really want
```
この例はPBE擬ポテンシャルを使用してRPBE計算を実行した際に得られるメッセージです。ここに示される数字
```
                           (   1   4  44   4   0   0   0)
```
は以下のような内部変数に対応しています。
(``iexch`` ``icorr`` ``igcx`` ``igcx`` ``inlc`` ``imeta`` ``imetac``)
これらの変数は交換相関汎関数を指定するための内部パラメータです。

|Variable | description |
|---|---|
| iexch | (LDA) exchange functional |
| icorr | (LDA) correlation functional |
| igcx | Gradient correction on exchange |
| igcc | Gradient correction on correlation |
| inlc | Nonlocal correlation for vdW-DF and rVV10|
| imetac | meta-GGA correction on exchange |
| imetac | meta-GGA correction on correlation |

QEの内部ではLDAを元に勾配補正等を追加する形で交換相関汎関数を定義しています。

すべての変数と対応する汎関数は``Modules/funct/``に含まれる``funct.f90``に記載されています。

（随時更新中）

# 交換相関汎関数に関連するウェブページ

- [Density Functionals from the Truhlar Group](https://comp.chem.umn.edu/info/DFT.htm)
- [Minessota Funcitonal Module](https://comp.chem.umn.edu/mfm/)

（随時更新）