Quantum ESPRESSO ATOMIC_SPECIES must be present before??

Quantum ESPRESSO ATOMIC_SPECIES must be present before??

QE

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」に変換します。

  1. vi で開く
  2. 念のためEscを押してノーマルモードにする
  3. :set ff=unix を入力してEnter
  4. 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上で作業をしていれば起こらなかったのかもしれません。

コメント

タイトルとURLをコピーしました