.. _sec-cif2x-tutorial: チュートリアル ================================================================ 第一原理計算入力ファイル生成ツール cif2x を使うには、入力パラメータファイルと結晶構造データおよび擬ポテンシャルファイルを用意した後、プログラム cif2x を実行します。現在は Quantum ESPRESSO, VASP, OpenMX, AkaiKKR の入力ファイル生成に対応しています。以下では、 ``docs/tutorial/cif2x`` ディレクトリにある Quantum ESPRESSO 向けサンプルを例にチュートリアルを実施します。 入力パラメータファイルを作成する ---------------------------------------------------------------- 入力パラメータファイルには、第一原理計算プログラムに与える入力ファイルの内容を記述します。 以下に入力パラメータファイルのサンプルを記載します。このファイルは YAML形式のテキストファイルで、結晶構造データに対するオプションの指定や、出力する第一原理計算入力ファイルの内容を記述します。仕様の詳細については :ref:`ファイルフォーマット ` の章を参照してください。 YAMLフォーマットでは、 ``keyword: value`` の辞書形式でパラメータを記述します。 ``value`` には数値や文字列などのスカラー値や、複数の値を ``[ ]`` または箇条書きの形式で列挙するリスト型、または辞書型を入れ子にすることができます。 .. literalinclude:: ../../../../tutorial/cif2x/input.yaml :language: yaml 入力パラメータファイルは ``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`` が空欄で上書きされていることに留意してください。 .. literalinclude:: ../../../../tutorial/cif2x/scf.in_tmpl :language: fortran 第一原理計算入力ファイルを生成する ---------------------------------------------------------------- 入力パラメータファイル(input.yaml)と結晶構造データ(Co3SnS2_nosym.cif)を入力として cif2x を実行します。 .. code-block:: bash $ 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計算用の入力ファイルが書き出されます。 パラメータセットを指定する ---------------------------------------------------------------- 入力パラメータ内の値をいくつか変えながら一連の入力ファイルを生成したいことがあります。例えばカットオフの値やk点の数を変えて収束性を評価するなどの場合です。入力パラメータには値のリストや範囲を指定することができ、値の組み合わせごとに個別のディレクトリを作成して入力ファイルを生成します。 パラメータセットの指定は特別な構文 ``${...}`` を用います。 .. code-block:: yaml 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/`` サブディレクトリ内に作成されます。