Quantum ESPRESSOの実行時に以下のエラーが出ました。
Error in routine card_atomic_positions (2):
ATOMIC_SPECIES must be present before
先に結論を言うと、犯人は改行文字(CR-LF)です。
現象
こちらのデータをGPU版のQEで動かしたところ
Program PWSCF v.7.2 starts on 29Dec2023 at 16:15:55
This program is part of the open-source Quantum ESPRESSO suite
for quantum simulation of materials; please cite
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
"P. Giannozzi et al., J. Chem. Phys. 152 154105 (2020);
URL http://www.quantum-espresso.org",
in publications or presentations arising from this work. More details at
http://www.quantum-espresso.org/quote
Parallel version (MPI & OpenMP), running on 2 processor cores
Number of MPI processes: 1
Threads/MPI process: 2
MPI processes distributed on 1 nodes
6176 MiB available memory on the printing compute node when the environment starts
Reading input from methane1.in
ignored card &CELL
ignored card /
ignored card
ignored card ATOMIC_SPECIES
ignored card C 12.011 C.PBE-N-KJPAW_PSL.1.0.0.UPF
ignored card H 1.008 H.PBE-RRKJUS_PSL.1.0.0.UPF
ignored card
ignored card
ignored card
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Error in routine card_atomic_positions (2):
ATOMIC_SPECIES must be present before
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
stopping ...
のようなエラーが出ました。
ファイル内ではATOMIC_POSITIONSの前にATOMIC_SPECIESを書いているので、何が悪いのかよくわかりません。
またinputファイルはCPU版QEでは問題なく動いたもので、GPU用QEで動かしたときにのみエラーになりました。
改行コードの確認
いろいろ調べたところ改行コードが怪しいので確かめてみます。
cat -eでファイルを読んでみます。
$ cat -e methane1.in
&CONTROL^M$
calculation='md'^M$
dt=20^M$
nstep=50^M$
/^M$
&SYSTEM^M$
ntyp = 2^M$
nat = 5^M$
ibrav = 0^M$
nosym=.true.^M$
以下略
改行文字が ^M$ です。これはWindowsスタイル「CR-LF」の場合に表示されます。
QEはUnixスタイル「LF」じゃないと正しく読めない場合があるらしいです。
ではこの「CR-LF」を「LF」に変換します。
- vi で開く
- 念のためEscを押してノーマルモードにする
- :set ff=unix を入力してEnter
- ZZ を入力(ファイルを上書き保存して閉じる)
では改めて確認します。
$ cat -e methane1.in
&CONTROL$
calculation='md'$
dt=20$
nstep=50$
/$
&SYSTEM$
ntyp = 2$
nat = 5$
ibrav = 0$
nosym=.true.$
以下略
改行文字が $ になりました。これでOKです。
これで計算を実行したところ、エラーなく始まりました。
まとめ
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Error in routine card_atomic_positions (2):
ATOMIC_SPECIES must be present before
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
のエラーは、改行文字をWindowsスタイルからUnixスタイルに書き換えることで解決しました。
また、そもそもの原因はWindows上で作ったQEのファイルをWSL (Linux)にコピーして実行したことでした。全部WSLやLinux上で作業をしていれば起こらなかったのかもしれません。
コメント