ABINIT
密度汎関数法による電子状態計算のパッケージ
- http://www.abinit.org/
- インプット変数 https://docs.abinit.org/variables/basic/
- ソースコード(ミラー) https://github.com/abinit/abinit
- 実行形式 https://www.abinit.org/package/7.4.3 (最新バージョンの実行形式は配布されていないので、下記のようにインストールが必要です)
コンパイルの仕方
> wget https://www.abinit.org/sites/default/files/packages/abinit-9.4.2.tar.gz > tar xzf abinit-9.4.2.tar.gz > cd abinit-9.4.2 > mkdir build > cd build > module load intel/2020.1 (ITOの場合) > ../configure --with-mpi MPI_LIBS="-qopenmp" CC=mpiicc CXX=mpiicpc FC=mpiifort(ここをうまくせっていする) > make mj8 (これが実行できないなら、失敗している)
変数等は、マニュアルを見ればよいが、アウトプットが何を意味しているかはプログラムを見る方が早い場合がある。 これはソースコードをダウンロードし、アウトプットで出力されている文字列を grep 検索することで分かる。
以下はバージョン8.1.3 の場合。
> git clone https://github.com/abinit/abinit -b 8.1.3 > cd abinit/src > grep "好きな文字列" */*
アウトプットに
--- Iteration: ( 1/1000) Internal Cycle: (1/1)
と出るが、プログラムでは
'--- Iteration: (',itime,'/',ntime,') Internal Cycle: (',icycle,'/',ncycle,')',ch10,('-',kk=1,80)
となっている。 ncycle は abinit/src/45_geomoptim/m_abimover.F90 で定められ、
!specs%ncycle is 1 by default except for ionmov=1,9,14
となっている。基本的にはユーザーは指定できない。 Internal Cycle:(1/1) は、デフォルト通りなので気にしなくてよい。
SCFループ回数 nstep と収束エネルギー閾値 toldfe について、以下のエラーが出ていないか確認しておく。
scprqt: WARNING - nstep= 300 was not enough SCF cycles to converge; maximum energy difference= 1.424E-03 exceeds toldfe= 1.000E-06
この場合には、電子分布が不正確なものになっている可能性がある。 リラックス計算(ionmov)の場合には、ループ計算途中のイオン配置での電子分布が不正確なため、 力が不正確になり、次のイオン配置も不正確になる可能性がある。
うまくいっていると、
At SCF step 16, etot is converged : for the second time, diff in etot= 2.964E-07 < toldfe= 1.000E-06
が出る。
Counter:39033