|
这个问题最棘手的部分是生成不同的POSCAR。POSCAR中原子坐标不变,只根据一套公式改变基矢。
麻烦就在这改变基矢上了。拉伸还行,压缩有个负号-,而-在Shell中又有其它用途,导致程序稳定性堪忧。
据个人经验,先用Matlab把POSCAR做好,再逐个计算最好。Shell的计算能力实在着急。
贴个用QuantumESPRESSO优化不同应变下结构的脚本:
- #! /bin/bash
- runjob()
- {
- local a1x=$(echo $a | awk '{printf "%14.9f", $1/2}')
- local a1y=$(echo $a $ita | awk '{printf "%14.9f", (1-$2)/2*sqrt(3)*$1}')
- local a2x=$(echo $a | awk '{printf "%14.9f", -$1/2}')
- local a2y=$(echo $a $ita | awk '{printf "%14.9f", (1-$2)/2*sqrt(3)*$1}')
- cat > $ita.in << EOF
- &CONTROL
- prefix = '$ita'
- calculation = 'relax'
- restart_mode = 'from_scratch'
- pseudo_dir = './'
- outdir = './'
- wfcdir = './'
- verbosity = 'high'
- wf_collect = .TRUE.
- nstep = 250
- etot_conv_thr = 7.3d-6
- forc_conv_thr = 3.8d-4
- tprnfor = .TRUE.
- /
- &SYSTEM
- ibrav = 0
- celldm(1) = 1.889726125
- ntyp = 2
- nat = 2
- ecutwfc = 70
- nbnd = 16
- occupations = 'smearing'
- smearing = 'gaussian'
- degauss = 0.005
- /
- &ELECTRONS
- electron_maxstep = 250
- conv_thr = 1.0d-8
- mixing_mode = 'plain'
- mixing_beta = 0.7
- mixing_ndim = 8
- diagonalization = 'david'
- diago_david_ndim = 4
- /
- &IONS
- ion_dynamics = 'bfgs'
- /
- ATOMIC_SPECIES
- A 1.0 A.pbe-mt_fhi.UPF
- B 2.0 B.pbe-mt_fhi.UPF
- CELL_PARAMETERS {alat}
- $a1x$a1y 0.000000000
- $a2x$a2y 0.000000000
- 0.000000000 0.000000000 20.500000000
- ATOMIC_POSITIONS {crystal}
- B 0.333334671 0.333334671 0.431781565
- A 0.666665091 0.666665091 0.369744698
- K_POINTS {automatic}
- 12 12 1 0 0 0
- EOF
- $MPIRUN pw.x -in $ita.in &> $ita.out
- wait
- rm -r *.save
- wait
- }
- ncore=20
- MPIRUN="mpirun -np $ncore"
- topdir=$(pwd)
- a=4.055466757
- for ita in $(seq 0.0 0.005 0.03); do
- runjob
- done
复制代码 |
评分 Rate
-
查看全部评分 View all ratings
|