3. チュートリアル¶
第一原理計算入力ファイル生成ツール cif2x を使うには、入力パラメータファイルと結晶構造データおよび擬ポテンシャルファイルを用意した後、プログラム cif2x を実行します。現在は Quantum ESPRESSO, VASP, OpenMX, AkaiKKR の入力ファイル生成に対応しています。以下では、 docs/tutorial/cif2x
ディレクトリにある Quantum ESPRESSO 向けサンプルを例にチュートリアルを実施します。
3.1. 入力パラメータファイルを作成する¶
入力パラメータファイルには、第一原理計算プログラムに与える入力ファイルの内容を記述します。
以下に入力パラメータファイルのサンプルを記載します。このファイルは YAML形式のテキストファイルで、結晶構造データに対するオプションの指定や、出力する第一原理計算入力ファイルの内容を記述します。仕様の詳細については ファイルフォーマット の章を参照してください。
YAMLフォーマットでは、 keyword: value
の辞書形式でパラメータを記述します。 value
には数値や文字列などのスカラー値や、複数の値を [ ]
または箇条書きの形式で列挙するリスト型、または辞書型を入れ子にすることができます。
structure:
use_ibrav: false
tolerance: 0.05
optional:
pseudo_dir: ./pseudo
pp_file: ./pseudo/pp_psl_pbe_rrkjus.csv
tasks:
- mode: scf
output_file: scf.in
output_dir: scf
template: scf.in_tmpl
content:
namelist:
control:
prefix: pwscf
pseudo_dir:
outdir: ./work
system:
ecutwfc:
ecutrho:
CELL_PARAMETERS:
ATOMIC_SPECIES:
ATOMIC_POSITIONS:
option: crystal
K_POINTS:
option: automatic
grid: [8,8,8]
入力パラメータファイルは structure
, optional
, tasks
のブロックから構成されます。
structure
は結晶構造データに関するオプションを指定します。
optional
は擬ポテンシャルに関する global な設定などを行います。
tasks
は出力する第一原理計算入力ファイルの内容を指定します。一連の計算に対応して複数のファイルを生成できるよう、tasks は配列の値を取ります。
各出力について、計算内容は mode
パラメータで指定します。SCF計算の scf
や NSCF計算の nscf
に対応するほか、一般的な出力を行う任意の出力モードを指定できます。
ファイルは output_dir
および output_file
で指定するファイルに書き出されます。
出力内容は content
に記載します。
Quantum ESPRESSO の入力ファイルは、 &keyword
で始まる Fortran90 の namelist 形式と、 K_POINTS
などのキーワードで始まり空行で分割される cards と呼ばれるブロックからなります。 content
には namelist と cards を入れ子の辞書形式で指定します。
いくつかの例外を除いて、指定された内容が基本的にはそのまま入力ファイルに書き出されます。値が空欄のキーワードは、結晶構造データなどから求めた値が代入されます。
また、template として入力ファイルの雛形を指定することもできます。 template
に指定したファイルの内容と content
のデータを合わせたものを入力データとして扱います。同じキーワードのデータが存在する場合は content
の指定が優先されます。従って、既存の入力ファイルを元に必要な箇所を入力パラメータファイルで上書きする使い方が可能です。上記の例では次のファイル(scf.in_tmpl
)を template として取り込み、カットオフと CELL_PARAMETER, ATOMIC_SPECIES, ATOMIC_POSITIONS, K_POINT の箇所を結晶構造等から決めます。 ecutwfc
と ecutrho
が空欄で上書きされていることに留意してください。
&control
calculation = 'scf'
prefix = 'pwscf'
pseudo_dir = './pseudo'
outdir = './work'
tstress = .true.
tprnfor = .true.
/
&system
ibrav = 0
nat = 7
ntyp = 3
ecutwfc = 36.0
ecutrho = 180.0
occupations = 'smearing'
smearing = 'm-p'
degauss = 0.01
noncolin = .true.
nspin = 2
/
&electrons
missing_beta = 0.1
conv_thr = 1e-08
/
3.2. 第一原理計算入力ファイルを生成する¶
入力パラメータファイル(input.yaml)と結晶構造データ(Co3SnS2_nosym.cif)を入力として cif2x を実行します。
$ cif2x -t QE input.yaml Co3SnS2_nosym.cif
予め必要な擬ポテンシャルのファイルを ./pseudo
ディレクトリに配置し、擬ポテンシャルのインデックスファイルを ./pseudo/pp_psl_pbe_rrkjus.csv
に作成しておきます。
cif2x
を実行すると Quantum ESPRESSO用の入力ファイルが生成され出力されます。出力先は入力パラメータファイル内のパラメータで指定するディレクトリ(output_dir
)およびファイル(output_file
)です。この例では ./scf/scf.in
に SCF計算用の入力ファイルが書き出されます。
3.3. パラメータセットを指定する¶
入力パラメータ内の値をいくつか変えながら一連の入力ファイルを生成したいことがあります。例えばカットオフの値やk点の数を変えて収束性を評価するなどの場合です。入力パラメータには値のリストや範囲を指定することができ、値の組み合わせごとに個別のディレクトリを作成して入力ファイルを生成します。
パラメータセットの指定は特別な構文 ${...}
を用います。
content:
K_POINTS:
option: automatic
grid: ${ [ [4,4,4], [8,8,8], [12,12,12] ] }
例えば上記のように K_POINTS
を指定すると、 grid
の値が [4,4,4]
, [8,8,8]
, [12,12,12]
の入力ファイルがそれぞれ 4x4x4/
, 8x8x8/
, 12x12x12/
サブディレクトリ内に作成されます。