*Quick start [#g70d0508]
水素分子を例にとりASEを用いてQEを実行する方法を説明します。
**従来のQEの実行方法 [#y891aec8]
先ず最初に従来の方法でQEを実行しましょう。
このチュートリアルではxeシステム (xe1) 上で8コア、あるいはxe2で12コア使用することを想定しています。
- 入力ファイル (h2_scf.in)
 &control
    calculation   = 'scf'
    restart_mode  = 'from_scratch'
    pseudo_dir    = '/home/ikutaro/QE/pseudo/'
    outdir        = './tmp/'
    prefix        = 'h2'
    tprnfor       = .true.
    forc_conv_thr = 1.d-4
 /
 &system
    ibrav   = 1
    A       = 10.d0
    nat     = 2
    ntyp    = 1
    nbnd    = 4
    ecutwfc = 30.0
    ecutrho = 120.0
 /
 &electrons
    diagonalization = 'david'
    conv_thr        = 1.0e-12
    mixing_beta     = 0.1
 /
 ATOMIC_SPECIES
  H 0.0000  H_ONCV_PBE-1.0.upf
 ATOMIC_POSITIONS (angstrom)
 H      0.000000000000      0.000000000000      0.00000000000
 H      0.000000000000      0.000000000000      0.74000000000
 K_POINTS (gamma)
- ジョブスクリプト (qsub-qe.sh)
 #$ -S /bin/bash
 #$ -cwd
 #$ -q xe1.q
 #$ -pe x8 8
 #$ -N H2
 #
 module load intel/2020.2.254
 module load intelmpi/2020.2.254
  
 INPUT_FILE='h2_scf.in'
 OUTPUT_FILE='h2_scf.out'
  
 PW_DIR=/home/ikutaro/QE/src/qe-6.6/bin
  
 MPI_COMMAND=mpirun
 PW_COMMAND=pw.x
 PW=$PW_DIR/$PW_COMMAND
  
 I_MPI_PIN=1
 I_MPI_FABRICS=shm:ofa
 OMP_NUM_THREADS=1
  
 if [ $OMP_NUM_THREADS -gt 1 ];
 then
 cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
 fi
  
 $MPI_COMMAND $PW < $INPUT_FILE > $OUTPUT_FILE
- ジョブのサブミット
 $ qsub qsub-qe.sh
ジョブが正常に終わるとh2_scf.outというファイルが出力されます。

** ASEを用いたQEの実行方法 [#w15d9b37]
入力ファイルの指定の仕方は一通りではありませんが、以下の例ではQEの入力ファイル (h2_scf.in) を用いて構造を入力しています(通常のQE計算の結果やリソースを可能な限り再利用する、という方針です)。ASEを使用してQEの入力ファイルに記述された構造をASEのフォーマットに変換することも可能でしょう。
- ASE用pythonスクリプト (ase-qe.py)
 from ase.io import read
 from ase.io import write
 from ase.calculators.espresso import Espresso
 qe_input_data = {'control': {'outdir' : './tmp/',
                              'prefix' : 'h2'
                             },
                  'system':  {'nbnd'   : 4,
                              'ecutwfc': 30,
                              'ecutrho': 120
                             },
                  'electrons': {'diagonalization' : 'david',
                                'conv_thr'        : 1.0e-12,
                                'mixing_beta'     : 0.1
                               }
                  }
 pseudopotentials = {'H':'H_ONCV_PBE-1.0.upf'}
 calc = Espresso(pseudopotentials=pseudopotentials,input_data=qe_input_data)
 h2=read('h2_scf.in',format='espresso-in')
 h2.calc = calc
 etot=h2.get_potential_energy()
 print('Total energy: %12.8f eV' % etot)
このスクリプトでは以下でh2_scf.inを読み込んでいます。
 h2=read('h2_scf.in',format='espresso-in')
構造以外のパラメーターはqe_input_dataで指定しています。パラメータは必要に応じて追加します。
また
 print('Total energy: %12.8f eV' % etot)
のようにprintを実行しないと全エネルギーは出力されないので注意が必要です。
- ジョブスクリプト
 #$ -S /bin/bash
 #$ -cwd
 #$ -q xe1.q
 #$ -pe x8 8
 #$ -N H2
 #$ -o H2_out
 #$ -e H2_err
  
 module load intel/2020.2.254
 module load intelmpi/2020.2.254
  
 export ASE_ESPRESSO_COMMAND="mpirun ${HOME}/QE/src/qe-6.6/bin/pw.x -in PREFIX.pwi > PREFIX.pwo"
 export ESPRESSO_PSEUDO="/home/ikutaro/QE/pseudo"
  
 python3 ase-qe.py
ASE_ESPRESSO_COMMANDとESPRESSO_PSEUDOを適切に指定する必要があります。この例ではQE (pw.x) の通常の入力はh2_scf.inではなくPREFIX.pwi、出力はPREFIX.pwoとなっています。計算に問題が起こった時はASEにより生成されたこれらのファイルの内容を確認すると良いでしょう。
- ジョブのサブミット
 $ qsub qsub-ase.sh
計算が正常に実行されると、H2_outに
 Total energy: -31.48786645 eV
が出力されます。
**参考 [#s6b6b5f9]
- [[ASE web page (espresso)>https://wiki.fysik.dtu.dk/ase/ase/calculators/espresso.html]]
- [[原子分子シミュレーションPythonパッケージAtomic Simulation Environment (ASE)を使ってみる その2:Quantum Espressoで第一原理計算>https://qiita.com/cometscome_phys/items/4af134de6d959a7718b9]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS