プログラムの説明

Superconducting Toolkitのメインプログラム sctk.x の機能は次のとおりである。 この他に、 Coulomb相互作用の計算で用いるKohn-Sham軌道を計算する 2重k点グリッドを生成するためのスクリプト twingridがある。

使い方


$ mpiexec options PATH/sctk.x -in input_file
    

入力ファイル書式

入力ファイルの書式は次のとおりである.

&CONTROL
  prefix = 
  outdir = 
  calculation = 
/
&KEL
  start_q =
  last_q =
  nci =
  laddxc =
  ecutfock =
  nq1 =
  nq2 =
  nq3 =
  lsf
/
&SCDFT
  temp =
  fbee =
  lbee =
  xic =
  nmf =
  nx =
  ne =
  emin =
  emax =
  electron_maxstep =
  conv_thr =
  fildyn =
  spin_fluc =
/
  
これらのパラメーターはネームリスト内では順不同に指定できる. また省略した場合はデフォルト値が使われる.

ネームリスト CONTROL

パラメーター 型型デフォルト値説明
prefix 文字列"pwscf"pw.xの入力のprefixと同じにする.
outdir文字列"./"pw.xの入力のoutdirと同じにする.
calculation文字列"kel"計算の種類
lshift_q0もしくは1の3つの整数1,1,1各逆格子ベクトルの方向でのq点のシフト. 0:シフトなし, 1:半グリッド分シフト.

ネームリスト KEL

calculation = "kel" としたときに使われるパラメーター。
パラメーター 型型デフォルト値説明
start_q正の整数1遮蔽Coulomb/スピンゆらぎ相互作用を計算するq点の始点
last_q正の整数既約q点数遮蔽Coulomb/スピンゆらぎ相互作用を計算するq点の終点
laddxc0 or 10遮蔽を計算するときの近似のレベルを指定する. 0 : RPA, 1: 断熱的LDA.
lsf0 or 10スピンゆらぎ相互作用 [3]を計算する(1)かしない(0)か
ecutfock実数pw.xでの値分極関数を計算するときの平面波カットオフ [Ry].
nq1, nq2, nq3正の整数a2Fsaveのk点メッシュ数と同じ波動関数データのk点メッシュ.twingrid.shの入力と同じにしなければならない.
nci正の整数5遮蔽Coulomb相互作用を計算する松原振動数の数.

ネームリスト SCDFT

calculation = "scdft" としたときなどに使われるパラメーター。
パラメーター 型型デフォルト値説明
temp正の実数0.1温度. 単位ケルビン.
fbee正の整数1全バンドのうち, ギャップ方程式の計算に含める一番初めのバンド.
lbee正の整数pw.xのnbndギャップ方程式の計算に含める最後のバンド.
xic実数-1.0ギャップ関数外挿法に用いるパラメーター. 単位 Ry.これを0.0未満にするとギャップ関数外挿法を使わない.デフォルトでは外挿法を使わない設定になっている.
nmf整数10Comlombカーネルの計算で用いる松原振動数積分に用いる点の数.
nx正の整数100フェルミ面近傍のバンドの付加的エネルギーグリッドのグリッド数.
ne正の整数50準粒子DOS計算のみで使用.準粒子DOSを計算するエネルギー点数.
emin正の実数1.0e-7フェルミ面近傍のバンドの付加的エネルギーグリッドのためのパラメータ.単位 Ry.
emax正の実数5.0準粒子DOS計算のみで使用.準粒子DOSを計算するエネルギーグリッドの上限. 単位 meV.
electron_maxstep正の整数100ギャップ方程式を反復法で解くときの反復回数の上限数.
conv_thr正の実数1.0e-15ギャップ方程式を反復法で解くときの,新旧のギャップ関数の差の2乗平均に対する収束判定のしきい値. 単位 Ry.
filedyn文字列"matdyn"ph.xのfiledynと同じにしなければならない。
spin_fluc論理型.False..True.にするとスピン揺らぎ [3] を含める。
scdft_kernel正の整数11: Lüders2005 [4], 2: Sanna2020 [5]
lz_coulomb論理型.False.Coulomb renormalization [6]
l_vc_vsf0,1,22$V_\textrm{C}(\omega)$および$V_\textrm{sf}(\omega)$について, 0:全て無視する (el-ph only). 1:$\omega$-依存性を無視する (static), 2: 全て考慮する(dynamical).
q_ffloReal(3)0.0,0.0,0.0秩序変数の運動量. (Reciprocal fractional unit)
initial_deltaString"random-nodeless"k-依存ギャップ関数の初期値. "random-nodeless", "random-nodal", "constant", "band-constant"から選ぶ.

入出力ファイル

sctk.xに関連するファイルは次の通りである。

{prefix}.xml

格子定数等の情報を含む. pw.xにより生成される.

{prefix}.a2Fsave

通常のDFT計算で求めたKohn-Shamエネルギーやそのkメッシュ情報, 対称操作を含む. pw.xで la2f=.true. とすると生成される.

{prefix}.save/wfc*.dat

各k点のKohn-Sham軌道. *にはk点の番号が入る. pw.xにより生成される.

{prefix}.vel*

各q点での遮蔽Coulomb相互作用のChebyshev補間の係数. *にはq点の番号が入る. sctk.x で calculation="kel"とすると出力される.

{prefix}_ph0/{prefix}.q_*/{prefix}.elph\*

各q点での電子-フォノン相互作用, フォノン振動数. *にはq点の番号が入る. ph.xで electron_phonon="scdft_input" とすると作られる.

{prefix}_lambda.frmsf, {prefix}_mu.frmsf

くりこみ因子 $\lambda_{n {\bf k}}$ のFermi面上での値をプロットするための, FermiSurfer用データファイル. sctk.x で calculation="lambda_mu_k"とすると出力される.

{prefix}.scgap

超伝導ギャップ関数 $\Delta_{n {\bf k}}$. 対応するKohn-Shamエネルギー $\xi_{n {\bf k}}$, 積分重み, バンド番号, k 点番号, 繰りこみ因子 $Z_{n {\bf k}}$ sctk.x で calculation="scdft"とすると出力される.

{prefix}.qpdos

第1列:準粒子エネルギー(単位 meV), 第2列:準粒子状態密度(単位 Ry-1). sctk.x で calculation="qpdos"とすると出力される.

{prefix}_delta.frmsf, {prefix}_Z.frmsf

超伝導ギャップ関数 $\Delta_{n {\bf k}}$ およびくりこみ因子 $Z_{n {\bf k}}$ のFermi面上での値をプロットするための, FermiSurfer_ 用データファイル. sctk.x で calculation="deltaf"とすると出力される.

計算の種類

パラメーター calculation に次の文字列を入れて、計算の種類を指定する。

kel : 遮蔽Coulomb/スピン揺らぎ媒介相互作用

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある. プログラムを実行したディレクトリに, 次のものが作られる.

lambda_mu_k : 軌道ごとの電子フォノンパラメーター

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある. プログラムを実行したディレクトリに, 次のものが作られる.

scdft : ある温度でのSCDFT計算

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある. プログラムを実行したディレクトリに, 次のものが作られる.

scdft_tc : 2分法による転移温度の自動計算

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある. プログラムを実行したディレクトリに, 次のものが作られる.

qpdos : 準粒子状態密度

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある. プログラムを実行したディレクトリに, 次のものが作られる.

deltaf : Fermi面上でのギャップ関数を計算しFermiSurfer用ファイルを出力する

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある. プログラムを実行したディレクトリに, 次のものが作られる.

ultrasonic : 超音波吸収係数

プログラムを実行しているディレクトリ内に, 次のものを用意しておく必要がある.

twingrid.x

sctk.x において calculation="kel"でCoulomb相互作用を計算するときのKohn-Sham軌道の計算(pw.x)において用いる2重kグリッドを生成するスクリプト.

使い方


$ bash PATH/twingrid.x nk1 nk2 nk3 dk1 dk2 dk3 >> input_file_for_pw
            
nk1, nk2, nk3 はそれぞれの逆格子ベクトルの方向のk点分割数, dk1, dk2, dk3 はそれぞれ0もしくは1が入り、逆格子ベクトルの方向に半グリッド分ずらすか(1)否か(0)を指定する.
一般的には dk1 = dk2 = dk3 =1 が使われるが、六方晶や単純正方格子の場合には z 軸方向のみを1とし、他を0とすると良い.

標準出力

次のように標準出力される.

K_POINTS crystal
Total_number_of_k
k_vector1 1.0
k_vector2 1.0
k_vector3 1.0
  :
    
これにより, $\Gamma$ 点を含むグリッドと, そこから半グリッドぶんずらしたグリッド上のk点がセットで生成される. 上の使い方では, この標準出力を pw.xの入力ファイルの末尾にリダイレクトしている.