LVCSH-mpi的计算流程
计算步骤如下:
- 第一步:在工作目录下创建文件夹 LVSH
mkdir LVCSH
- 第二步:在LVCSH下创建三个文件:
lvcsh.bsub
、LVCSH.in
、runlvcsh.sh
其中lvcsh.bsub
为LVCSH的bsub提交脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
#BSUB -J lvcsh
##BSUB -q privateq-zw
#BSUB -q publicq
#BSUB -n 28
#BSUB -R "span[ptile=28]"
#BSUB -o %J.out
#BSUB -e %J.err
CURDIR=$PWD
rm -f nodelist >& /dev/null
for host in `echo $LSB_HOSTS`
do
echo $host >> nodelist
done
NP=`cat nodelist | wc -l`
#source ~/xiehua/.bashrc
#export OMP_NUM_THREADS=1
#export MKL_NUM_THREADS=1
export MODULEPATH=/share/home/zw/xiehua/modulefiles:$MODULEPATH
module load lvcsh/0.2-mpi
mpirun -np $NP LVCSH
LVCSH.in为初始的输入文件设置,还需要先跑一个测试后,根据输出文件调整电子和空穴自由度数目,以减少计算量。其中ieband_min
、ieband_max
、ihband_min
以及ihband_max
需要根据wannier插值的能带以及epw.out
中的输出,和我们所关心的能量区间进行设置。初始时,需要先将nefre_sh
、nhfre_sh
进行注释掉,使用所有的自由度,在根据初始激发光设置计算后,得到初始的电子和空穴的绝热表象下的初始态位置,后面将nefre_sh
、nhfre_sh
设置的稍微大一些,对于不同的入射光和不同的k点和q点密度,需要使用不同的nefre_sh
、nhfre_sh
设置。初始时,将naver
、nsnap
、nstep
设置的小一些,以尽快完成测试,并得到合适的nefre_sh
、nhfre_sh
的设置值,其中对于naver
的设置,至少与MPI的线程数相同。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
calculation = "lvcsh"
verbosity = "low"
prtgmnvkq = .false.
outdir = "./"
lfeedback = .true.
l_dEa2_dQ2 = .true.
methodsh = "FSSH"
ldecoherence = .true.
Cdecoherence = 0.1
lit_gmnvkq = 0.1 ! in unit of meV
lit_ephonon = 0.0 ! in unit of meV
eps_acustic = 5.0 ! in unit of cm-1
lehpairsh = .true.
!lelecsh = .true.
!lholesh = .true.
ieband_min = 5
ieband_max = 5
ihband_min = 4
ihband_max = 4
!lsortpes = .false.
!mix_thr = 0.8
lreadscfout = .false.
scfoutname = "scf.out"
lreadphout = .false.
phoutname = "ph.out"
epwoutname = "./epw.out"
!nefre_sh = 20
!nhfre_sh = 20
naver = 28
nsnap = 50
nstep = 2
dt = 0.5
savedsnap = 5
pre_nstep = 5000
pre_dt = 0.5
ld_fric = 0.01 !
temp = 300
l_ph_quantum = .true.
llaser = .true.
efield_cart = 1.0 1.0 1.0
w_laser = 2.0 ! in unit of eV
fwhm = 100 ! in unit of fs
对于不同的k点和q点的提交脚本runlvcsh.sh
如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
ensampledir='ensample'
for i in $(seq 6 6 36)
do
mkdir epwkq${i}
cp ../epw/epw${i}.out epwkq${i}
cp LVCSH.in epwkq${i}
cp lvcsh.bsub epwkq${i}
sed -i "s:epw.out:epw${i}.out:g" epwkq${i}/LVCSH.in
cd epwkq${i}
for j in $(seq 0 1 0)
# for j in $(seq 1 1 10)
do
mkdir ${ensampledir}${j}
cp LVCSH.in ${ensampledir}${j}
cp lvcsh.bsub ${ensampledir}${j}
cd ${ensampledir}${j}
sed -i "2s:lvcsh:lvcsh-kq${i}-s${j}:g" lvcsh.bsub
bsub < lvcsh.bsub
cd ..
done
cd ..
done