これまで,水素分子について全エネルギーを計算というだけで,具体的な条件やファイルの内容は説明しませんでした。確かに全エネルギー(と電荷密度分布)を得ることができましたが,何についてどのような計算したのか?が不明です。"何について"を入力ファイルの内容と共に説明します。

計算では,3つの入力ファイルを用意しました。メイン入力ファイル(*.in),標準入力ファイル(*.files),擬ポテンシャルファイルです。これら入力ファイルとabinitプログラム本体,出力ファイルの関係を図示したのが以下です。図では *.filesファイルは重複していますが,実際には1つです。
abinit_Flow
全エネルギー計算時,①を編集,②は省略(テンプレートの*.inをそのまま利用)しました。コマンドプロンプトで③指示を出し,④全エネルギーの値確認および電荷密度分布表示を行いました。"何のどんな条件"については,省略した②に記述してあります。

。。というわけで,*.inファイルの内容を今回初めて見てみます。*.inファイルは,計算対象である原子群の情報と,計算条件の情報が含まれます。今回は原子群の情報のみ眺めます。以下が,tbase1_1.inの該当部分です。

001: # H2 molecule in a big box
002: #
003: # In this input file, the location of the information on this or that line
004: # is not important : a keyword is located by the parser, and the related
005: # information should follow.
006: # The "#" symbol indicates the beginning of a comment : the remaining
007: # of the line will be skipped.
008:
009: #Definition of the unit cell
010: acell 10 10 10    # The keyword "acell" refers to the
011:                   # lengths of the primitive vectors (in Bohr)
012: #rprim 1 0 0 0 1 0 0 0 1 # This line, defining orthogonal primitive vectors,
013:                   # is commented, because it is precisely the default value of rprim
014:
015: #Definition of the atom types
016: ntypat 1          # There is only one type of atom
017: znucl 1           # The keyword "znucl" refers to the atomic number of the
018:                   # possible type(s) of atom. The pseudopotential(s)
019:                   # mentioned in the "files" file must correspond
020:                   # to the type(s) of atom. Here, the only type is Hydrogen.
021:
022:
023: #Definition of the atoms
024: natom 2           # There are two atoms
025: typat 1 1         # They both are of type 1, that is, Hydrogen
026: xcart             # This keyword indicates that the location of the atoms
027:                   # will follow, one triplet of number for each atom
028:   -0.7 0.0 0.0    # Triplet giving the cartesian coordinates of atom 1, in Bohr
029:    0.7 0.0 0.0    # Triplet giving the cartesian coordinates of atom 2, in Bohr
030:
031: #Definition of the planewave basis set
〜以下,省略〜

まず,灰色で示してある部分はコメントです。abinitでは"#"以降の文字は全てコメント扱いとなり,何も書いていないのと同じ意味です。結局,6ブロック・8行が意味のある設定です。ここに,水素分子を定義する内容が記されているはずです。
コメントアウトされている1行目の"H2 molecule in a big box" (単なるコメントで,計算には一切関係ありません)を見てみます。"大きな箱の中のH2分子"と書いてあります。大きな箱H2分子が指定されているであろうことが予想できます。

大きな箱の指定が10行目の
010: acell 10 10 10
です。ここで,"acell"が箱のサイズを指定するための基本入力変数です。acellに続けて半角スペースで区切りながら数値を3つ指定します。数値の単位はBohrです。1 Bohr = 0.529 Åです。つまり,10行目は,5.29 Å × 5.29 Å × 5.29 Åの箱を用意するという意味です。この箱をVESTAで図示したのが下の図です。
Big_Box

続いて,H2分子の指定です。
まず,人間が水素分子というものを伝達する場合を想像して下さい。水素分子のことを知らない人に伝える場合です。例えば,"2個の","水素原子が","0.074 nm離れた状態"で一塊になっているもの。。と伝えると思います。コンピュータ(abinit)には,人間よりも遥かに厳密に伝えないといけません。abinitでは,
  1. 何種類の原子があるか?
  2. 各々何の原子か?
  3. 何個の原子があるか?
  4. 各々何の原子か?
  5. 各々どこにあるか?
を伝える(指定する)約束事になっています。1〜5がそれぞれ,16行目ntypat,17行目znucl,24行目natom,25行目typat,26〜29行目xcartに対応します。2.と4.が重複しているように思うかも知れませんが,今は気にしないでおきます。
何種類の原子があるか?: ntypat
016: ntypat 1
水素分子を構成する原子は(水素原子)1種類なので,"1"を指定します。
各々何の原子か?: znucl
017: znucl 1
水素原子の原子番号1を指定します。
何個の原子があるか?: natom
024: natom 2
水素分子には原子が2つ含まれるので,"2"を指定します。
各々何の原子か?: typat
025: typat 1 1
1つ目は水素原子(原子番号1),2つ目は水素原子(原子番号1)なので,"1 1"を指定します。ただし,ここで指定できる原子番号は,17行目znuclで定義した原子番号のみ(ここでは"1"のみ)です。
各々どこにあるか?: xcart
026: xcart
027:
028:   -0.7 0.0 0.0    # Triplet giving the cartesian coordinates of atom 1, in Bohr
029:    0.7 0.0 0.0    # Triplet giving the cartesian coordinates of atom 2, in Bohr
他の入力変数と異なり,xcartはすぐに改行します。27行目はあってもなくても構いません。24行目のnatomで指定した"原子2つ"分の位置をデカルト座標(xcartの場合)で指定します。つまり,2行指定します。28行目に1つ目の原子の座標,29行目に2つ目の原子の座標を指定します。単位は,コメント部分にもあるように,Bohrです。

上記で指定した水素分子大きな箱と共にVESTAで図示したのが下の図です。
H2_BigBox
図中左側のピンク色の玉が1つ目の水素原子,右側が2つ目の水素原子です。両原子間の距離は,28, 29行目の定義から,0.7 - (-0.7) = 1.4 Bohrであることが分かります。1 Bohr ≒ 0.529 Åなので,1.4 × 0.529 = 0.74 Åの原子間距離でtbase1_1.inファイルに指定されていた,ということになります。この値は,実験的に得られた水素分子の原子間距離です。Google検索等で確認して下さい。

注意

abinitは固体を想定した第一原理計算プログラムであるため,周期的境界条件が適用され,*.inで指定した結晶群が3次元に繰り返し並んだ(ことに相当する)系について計算を行います。従って,実際には下図のような"一見,結晶のような"原子群について計算されます。
H2_BigBox1
水素分子1つの計算を行いたいのにこれで良いのか?という疑問が一瞬生じます。

問題ありません。

そのために大きな箱を用意しました。これは,第一原理計算(バンド計算)のテクニックの1つで,隣の原子群と相互作用がはたらかないだけ十分離れた状態は,分子1つと同等の振る舞いであるという近似であり,定性的に確認されている状態です。定量的な確認は実際に手を動かす必要があります(本家チュートリアルLesson 2がこの内容です)。 

以上で,*.inファイル(メイン入力ファイル)の原子群指定部分の説明が完了です。計算条件部分の説明は,いずれ必要なときに行います。