進化的アルゴリズム¶
化学組成の情報から安定・準安定構造を予測するアプリケーション。VASP、GULP、siesta、Quantum Espresso、STM4、CP2kなどの第一原理計算アプリケーションを利用し、進化的アルゴリズムをはじめとする種々の手法による構造予測を行う。高圧下の結晶構造解析や、ナノ粒子、表面の構造予測に応用されている。
インストール¶
USPEX_v10.5 が現在利用可能です。最近 USPEX 2023.0 と呼ばれる USPEX の Python バージョンがリリースされていますが、Python バージョンはまだ試験段階であるため USPEX 10.5 を使用してください。ダウンロードは こちら から。ユーザー登録が必要です。
tar –xvf USPEX-10.5.tar.gz
cd ./USPEX_v10.5/
./install.sh
ここではインストールディレクトリを、
/home/uspex/bin_USPEX10
とします。インストールが終了すると、以下が.bashrcの最終行に追加されます。
#### ------------- USPEX v.10.5.0 ------------- ####
export MCRROOT=/home/uspex/bin_USPEX10
export PATH=/home/uspex/bin_USPEX10/application/archive/:$PATH
export USPEXPATH=/home/uspex/bin_USPEX10/application/archive/src
###----------------------------------------------
以上でインストールは終了です。
Siのdiamond構造がrandom配置から作れるか?¶
準備¶
mkdir Si-test
in ./Si-test, USPEX –c 01 (1番目の例のコピーを生成)
in ./Si-test, USPEX –g (計算準備)
例えば, USPEX –c 18; USPEX –g とすると18番目の例を用意できる
INPUT.txt の作成¶
ソースファイルに次のようなテキストを入力します。
% commandExecutable(ichinokura)
mpirun /opt/vasp.6.1.1_2022/bin/vasp_std > log
% commandExecutable(kenkonichi_C)
mpirun -bootstrap rsh /home/iikubo/bin/vasp54_std > log
Submission/submitjob_local.py¶
ORIGINAL
myrun_content = '''#!/bin/sh
#SBATCH -p lenovo
#SBATCH -t 06:00:00
#SBATCH -N 1
#SBATCH -n 8
#SBATCH -J {}
#SBATCH -o log.output
#SBATCH -e log.error
module load intel/mkl-11.2.3 vasp/vasp-5.4.4 mpi/impi-5.0.3
env
{}
'''.format(JOB_NAME, commandExecutable)
REVISED
myrun_content = '''#!/bin/bash
#PBS -j oe
#PBS -l nodes=1:ppn=32:C
cd $PBS_O_WORKDIR
echo $PBS_O_WORKDIR
export OMP_NUM_THREADS=1
export I_MPI_HYDRA_BOOTSTRAP=rsh
{}
'''.format(JOB_NAME, commandExecutable)
ORIGINAL
Output = check_output('sbatch {}'.format(RUN_FILENAME), shell=True, universal_newlines=True)
REVISED
output = check_output('qsub {}'.format(RUN_FILENAME), shell=True, universal_newlines=True)
ORIGINAL jobNumber = int(output.split(' ')[3]) REVISED jobNumber = int(output.split('.')[0])
Submission/checkStatus_local.py¶
ORIGINAL
output = check_output('squeue -j {}'.format(jobID), shell=True, universal_newlines=True)
REVISED
output = check_output('qstat {}'.format(jobID), shell=True, universal_newlines=True)
ORIGINAL
if ' R ' in output or ' PD ' in output:
REVISED
if ' R ' in output or ' Q ' in output:
実行¶
In ./Si-test, USPEX –r > log.uspex &
nohup ./EX01-3D_Si_vasp.sh &
EX01-3D_Si_vasp.sh¶
#!/bin/sh
while [ ! -f ./USPEX_IS_DONE ]; do
date >> log
USPEX -r >> log
sleep 300
done
USPEX –r >> log.uspex を300秒おきに延々と繰り返せというスクリプト
USPEX_IS_DONEというファイルが出来たら, 命令終了
ディレクトリCalcFold内にVASPのインプットが出来, そこでVASPが稼働
計算してみると, logに
Relaxation is done.
status = Local optimization finished
というメッセージが出たあと, still_ranning が出力され, これが原因で計算が中断した. still_ranningを手動消去したところ, ジョブが再開した.
また, ディレクトリresult## 内のOUTPUT.txt に
Halting criteria achieved: 5
というメッセージが出ている(たぶん計算系全体の構造最適化を行ったが, CalcFold5で計算中のジョブが収束に至っていないというメッセージだと思う. たぶんこのジョブのためにUSPEXが世代更新ができない状況になっているということだと思う. Still_ranningを消去するということは, この計算系の存在を認めたうえで, 強制的に世代更新をするということに対応すると思われる)
マニュアルの4.7 Restartの項目を見ると, restartのための全情報が保存されているので, 計算中断が起こったら, still_ranningを消去せよ, そうすると計算が再進行する, との記述があった
もうひとつのrestart法として, INPUT.txt 内に, pickUpGenとpickUpFolderを設定するやり方がある. USPEXでは, 計算結果は, ディレクトリresult## (##はフォルダ番号) 内のgeneration@@ (@@は世代番号) にrestartに必要な情報が収められており, 以下のように設定すると, この情報を用いて計算を再進行させることができる:
@@ : pickUpGen
## : pickUpFolder
INPUT FILE¶
1 : whichCluster (local submission: submit_local.mにて生成されるジョブスクリプト myran を用いてジョブをキューイングシステムに投入)
20 : populationSize [一世代20個の個体 (計算系)]
25 : numGenerations (25世代計算)
%abinitioCode
1 1 1 1 1
%Endabinitio
1: VASP, 一世代計算は5つのレベルのVASP計算から構成
ディレクトリSpecific 内に5種のINCAR (INCAR_1, INCAR_2, INCAR_3, INCAR_4, INCAR_5) が用意されている
POTCARが擬ポテンシャルデータ
VASPの擬ポテンシャルライブラリがどうなっているか上田さんに聞くこと
10 : numParallelCalcs (20×5の計算を10回に分けて計算する)
このインプットでのUSPEX計算は20×5×25=2500回のVASP計算からなる
300 : calculationType (次元: 0-3, 原子/分子: 0/1, 成分比を変えるか否か: 0/1)
この変数指定では, 3次元計算・原子ベース計算・成分比を変えない計算
301 : calculationType (他成分計算)
この場合は, 成分比を変える計算となる. 例えば三成分 (Sr, V, O)の場合, この三成分の比率を変えて計算を行う. この場合は, %numSpeciesを以下のように設定する:
%numSpecies
1 0 0
0 1 0
0 0 1
%EndNumSpecies