QE(Fe-Al)
最終更新日:2026年10月16日
バージョン1.4.2でEA-vcはQEに対応.
ここで利用しているファイルはCrySPY_utility/examples/qe_Fe-Al_EA-vcからダウンロードできる.
このチュートリアルでは,QEを用いてジョブスケジューラーを備えた計算機クラスタで行うことを想定している.
対象となるシステムは2元系のFe-Alで,強磁性を仮定した計算を行う.
事前計算
EA-vcではcryspy.inでref_energies(ver. 1.4.3以下では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
n_elite = 2
n_fittest = 10
slct_func = TNM
t_size = 2
maxgen_ea = 6
ref_energies = -3406.14117375 -91.25463006
[option]
rslt_out = always
energy_output_interval = 1
backup_interval = 1
algo = EA-vc を使用.- v1.5.0以降は,[option]セクションの
energy_output_intervalで凸包の図と凸包からの距離のファイルの出力間隔(世代数)を指定できる.デフォルトは1(毎世代),0で自動出力を無効化. - v1.5.0以降は,[option]セクションの
backup_intervalで自動バックアップの間隔(世代数)を指定できる.デフォルトは1,0で自動バックアップを無効化.詳細は機能 > バックアップを参照. jobcmdは計算機環境に合わせて変更すること.- [structure]セクションでは,
ll_natで各元素の原子数の最小値,ul_natで最大値を指定. n_pop = n_crsov + n_perm + n_strain + n_rand + n_add + n_elim + n_subsref_energies(ver. 1.4.3以下では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を書いておく.
CrySPYは./work/xxx/において,先頭の空白を除いて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