QE(Fe-Al)
2025年7月18日
バージョン1.4.2でEA-vcはQEに対応.
ここで利用しているファイルはCrySPY_utility/examples/qe_Fe-Al_EA-vcからダウンロードできる. このチュートリアルでは,QEを用いてジョブスケジューラーを備えた計算機クラスタで行うことを想定している. 対象となるシステムは2元系のFe-Alで,強磁性を仮定した計算を行う.
事前計算
EA-vcではcryspy.in
でend_point
として,各元素単体の1原子当たりのエネルギーを基準として用いるため,事前に計算する必要がある.
exampleファイルの中に二つのディレクトリがあるはず.
Al-fcc
├── pwscf.in
└── job_cryspy
Fe-bcc
├── pwscf.in
└── job_cryspy
インプットファイル(pwscf.in
)およびジョブスクリプト(job_cryspy
)があるので適宜使用する計算機の環境に合わせて編集すること.
pwscf.in
ファイルでは,最終的に使用するカットオフなどの値を単体の計算でも利用しなければならないので注意すること.
ジョブを実行する(ジョブサブミットのコマンドは適宜読み替えること).
cd Al_fcc
qsub job_cryspy
cd ../Fe_bcc
qsub job_cryspy
cd ..
計算が終わったら1原子あたりのエネルギーをeV単位に変換しておくこと. 今回はBCCやFCCなので,ユニットセルは1原子で構成されているが, 通常はユニットセルの原子数でセルあたりのエネルギーを割って計算する.
cryspy.in
cryspy.in
の例.
[basic]
algo = EA-vc
calc_code = QE
nstage = 2
njob = 10
jobcmd = qsub
jobfile = job_cryspy
[structure]
atype = Fe Al
ll_nat = 0 0
ul_nat = 8 8
[QE]
kppvol = 40 120
qe_infile = pwscf.in
qe_outfile = pwscf.out
[EA]
n_pop = 20
n_crsov = 5
n_perm = 2
n_strain = 2
n_rand = 2
n_add = 3
n_elim = 3
n_subs = 3
target = random
n_elite = 2
n_fittest = 10
slct_func = TNM
t_size = 2
maxgen_ea = 6
end_point = -3406.14117375 -91.25463006
[option]
algo = EA-vc
を使用.jobcmd
は計算機環境に合わせて変更すること.- [structure]セクションでは,
ll_nat
で各元素の原子数の最小値,ul_nat
で最大値を指定. n_pop
=n_crsov
+n_perm
+n_strain
+n_rand
+n_add
+n_elim
+n_subs
end_point
には事前計算しておいた,FeおよびAlにおける各単体の1原子当たりのエネルギー(eV/atom)を入力.atype
の順番.- [EA]セクションのパラメータについては,入力ファイル > [EA] sectionおよび探索アルゴリズム > 組成可変型進化的アルゴリズム(EA-vc)を見ること.
- 自動的にプロットされる凸包グラフのパラメータはチュートリアル > 組成可変型進化的アルゴリズム(EA-VC) > 解析と可視化も参考にすること.
for QE
VASPと違ってQEでは組成可変型への対応は簡単で,2元系の探索の場合は常に2元系のインプット,3元系なら常に3元系のインプットを./calc_in
に準備すればよい.
ただしnat
だけは変更の必要があるので,CrySPYが自動で書き換える.
準備する際は下記のように何か適当な数字でnat
を書いておく.
nat = 1
CrySPYは./work/xxx/
において,先頭の空白を除いてnat
から始まる行を
nat = (実際の原子数)
に自動的に書き換える.
calc_in/
job_cryspy
#!/bin/sh
#$ -cwd
#$ -V -S /bin/bash
####$ -V -S /bin/zsh
#$ -N FeAl_CrySPY_ID
#$ -pe smp 32
QEROOT=/usr/local/qe/q-e-qe-7.3.1/bin
mpirun -np $NSLOTS $QEROOT/pw.x -nk 4 < pwscf.in > pwscf.out
if [ -e "CRASH" ]; then
sed -i -e '3 s/^.*$/skip/' stat_job
exit 1
fi
pwscf.in
1_pwscf.in
&control
calculation = 'relax'
nstep = 40
pseudo_dir = '/usr/local/qe/gbrv/all_pbe_UPF_v1.5/'
outdir='./outdir/'
/
&system
ibrav = 0
nat = 1
ntyp = 2
ecutwfc = 40
ecutrho = 200
occupations = "smearing"
smearing = "mp"
degauss = 0.01
nspin = 2
starting_magnetization(1) = 0.4
starting_magnetization(2) = 0.0
/
&electrons
mixing_beta = 0.4
/
&ions
/
&cell
/
ATOMIC_SPECIES
Fe -1.0 fe_pbe_v1.5.uspp.F.UPF
Al -1.0 al_pbe_v1.uspp.F.UPF
2_pwscf.in
&control
calculation = 'vc-relax'
nstep = 200
pseudo_dir = '/usr/local/qe/gbrv/all_pbe_UPF_v1.5/'
outdir='./outdir/'
/
&system
ibrav = 0
nat = 1
ntyp = 2
ecutwfc = 40
ecutrho = 200
occupations = "smearing"
smearing = "mp"
degauss = 0.01
nspin = 2
starting_magnetization(1) = 0.4
starting_magnetization(2) = 0.0
/
&electrons
mixing_beta = 0.4
/
&ions
/
&cell
/
ATOMIC_SPECIES
Fe -1.0 fe_pbe_v1.5.uspp.F.UPF
Al -1.0 al_pbe_v1.uspp.F.UPF