LVCSH-MPI

Posted by Xiehua on June 11, 2022

LVCSH-mpi的计算流程

计算步骤如下:

  1. 第一步:在工作目录下创建文件夹 LVSH mkdir LVCSH
  2. 第二步:在LVCSH下创建三个文件:lvcsh.bsubLVCSH.inrunlvcsh.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_minieband_maxihband_min以及ihband_max需要根据wannier插值的能带以及epw.out中的输出,和我们所关心的能量区间进行设置。初始时,需要先将nefre_shnhfre_sh进行注释掉,使用所有的自由度,在根据初始激发光设置计算后,得到初始的电子和空穴的绝热表象下的初始态位置,后面将nefre_shnhfre_sh设置的稍微大一些,对于不同的入射光和不同的k点和q点密度,需要使用不同的nefre_shnhfre_sh设置。初始时,将navernsnapnstep设置的小一些,以尽快完成测试,并得到合适的nefre_shnhfre_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