ジョブファイルの自動書き換え

2025年7月10日 更新

CrySPYのジョブファイルで,CrySPY_IDという文字列は自動的に構造IDに置換される. PBSやSLURMなどのジョブスケジューラーを使う時,ジョブ名に構造IDを使うと便利である. 例えばPBSでは, #PBS -N Si_CrySPY_ID#PBS -N Si_15に置き換わる 大抵の場合,ジョブ名は数字から始められないことが多いので,Si_のように英字から始めておくと良い.

また,バージョン1.4.2からは末尾に以下のコマンドを書く必要はなくなった.CrySPYが自動で追記する.

sed -i -e '3s/^sub.*/done/' stat_job

例えばこのようなジョブファイルを./calc_in/job_cryspyjob_cryspycryspy.injobfileで指定するファイル名)に準備しておくと

#!/bin/sh
#$ -cwd
#$ -V -S /bin/bash
####$ -V -S /bin/zsh
#$ -N Si8_CrySPY_ID
#$ -pe smp 20
####$ -q ibis1.q
####$ -q ibis2.q

mpirun -np $NSLOTS pw.x < pwscf.in > pwscf.out


if [ -e "CRASH" ]; then
    sed -i -e '3 s/^.*$/skip/' stat_job
    exit 1
fi

例えばIDが15の場合,CrySPYが./work/15/job_cryspyを下記のように書き換える. 5行目のCrySPY_ID15に置換され,末尾にsedのコマンドが追記される.

#!/bin/sh
#$ -cwd
#$ -V -S /bin/bash
####$ -V -S /bin/zsh
#$ -N Si8_15
#$ -pe smp 20
####$ -q ibis1.q
####$ -q ibis2.q

mpirun -np $NSLOTS pw.x < pwscf.in > pwscf.out


if [ -e "CRASH" ]; then
    sed -i -e '3 s/^.*$/skip/' stat_job
    exit 1
fi

# ---------- CrySPY
sed -i -e '3s/^sub.*/done/' stat_job