******************************* 進化的アルゴリズム *******************************  化学組成の情報から安定・準安定構造を予測するアプリケーション。VASP、GULP、siesta、Quantum Espresso、STM4、CP2kなどの第一原理計算アプリケーションを利用し、進化的アルゴリズムをはじめとする種々の手法による構造予測を行う。高圧下の結晶構造解析や、ナノ粒子、表面の構造予測に応用されている。 インストール ===============================  USPEX_v10.5 が現在利用可能です。最近 USPEX 2023.0 と呼ばれる USPEX の Python バージョンがリリースされていますが、Python バージョンはまだ試験段階であるため USPEX 10.5 を使用してください。ダウンロードは `こちら `_ から。ユーザー登録が必要です。 .. code-block:: none tar –xvf USPEX-10.5.tar.gz cd ./USPEX_v10.5/ ./install.sh ここではインストールディレクトリを、 .. code-block:: none /home/uspex/bin_USPEX10 とします。インストールが終了すると、以下が.bashrcの最終行に追加されます。 .. code-block:: none #### ------------- 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配置から作れるか? ============================================================== 準備 -------- .. code-block:: none 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 .. code-block:: none Output = check_output('sbatch {}'.format(RUN_FILENAME), shell=True, universal_newlines=True) REVISED .. code-block:: none 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 .. code-block:: none output = check_output('squeue -j {}'.format(jobID), shell=True, universal_newlines=True) REVISED .. code-block:: none output = check_output('qstat {}'.format(jobID), shell=True, universal_newlines=True) ORIGINAL .. code-block:: none if ' R ' in output or ' PD ' in output: REVISED .. code-block:: none if ' R ' in output or ' Q ' in output: 実行 ======================== .. code-block:: none In ./Si-test, USPEX –r > log.uspex & nohup ./EX01-3D_Si_vasp.sh & EX01-3D_Si_vasp.sh -------------------------------------------------------------------------------- .. code-block:: none #!/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に .. code-block:: none Relaxation is done. status = Local optimization finished というメッセージが出たあと, still_ranning が出力され, これが原因で計算が中断した. still_ranningを手動消去したところ, ジョブが再開した. また, ディレクトリresult## 内のOUTPUT.txt に .. code-block:: none Halting criteria achieved: 5 というメッセージが出ている(たぶん計算系全体の構造最適化を行ったが, CalcFold5で計算中のジョブが収束に至っていないというメッセージだと思う. たぶんこのジョブのためにUSPEXが世代更新ができない状況になっているということだと思う. Still_ranningを消去するということは, この計算系の存在を認めたうえで, 強制的に世代更新をするということに対応すると思われる)  マニュアルの4.7 Restartの項目を見ると, restartのための全情報が保存されているので, 計算中断が起こったら, still_ranningを消去せよ, そうすると計算が再進行する, との記述があった  もうひとつのrestart法として, INPUT.txt 内に, pickUpGenとpickUpFolderを設定するやり方がある. USPEXでは, 計算結果は, ディレクトリresult## (##はフォルダ番号) 内のgeneration@@ (@@は世代番号) にrestartに必要な情報が収められており, 以下のように設定すると, この情報を用いて計算を再進行させることができる: .. code-block:: none @@ : pickUpGen ## : pickUpFolder INPUT FILE ======================== .. code-block:: none 1 : whichCluster (local submission: submit_local.mにて生成されるジョブスクリプト myran を用いてジョブをキューイングシステムに投入) 20 : populationSize [一世代20個の個体 (計算系)] 25 : numGenerations (25世代計算) .. code-block:: none %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の擬ポテンシャルライブラリがどうなっているか上田さんに聞くこと .. code-block:: none 10 : numParallelCalcs (20×5の計算を10回に分けて計算する) このインプットでのUSPEX計算は20×5×25=2500回のVASP計算からなる .. code-block:: none 300 : calculationType (次元: 0-3, 原子/分子: 0/1, 成分比を変えるか否か: 0/1) この変数指定では, 3次元計算・原子ベース計算・成分比を変えない計算 .. code-block:: none 301 : calculationType (他成分計算)  この場合は, 成分比を変える計算となる. 例えば三成分 (Sr, V, O)の場合, この三成分の比率を変えて計算を行う. この場合は, %numSpeciesを以下のように設定する: .. code-block:: none %numSpecies 1 0 0 0 1 0 0 0 1 %EndNumSpecies