Forum EPW
http://epwforum.uk/

Possibility to calculate mobility for 2d materials using EPW
http://epwforum.uk/viewtopic.php?f=6&t=728
Page 1 of 1

Author:  CHOU [ Thu Nov 15, 2018 6:28 am ]
Post subject:  Possibility to calculate mobility for 2d materials using EPW

Dear all,

I have been trying to use EPW to calculate mobility for 2d MoO3 for a long time. I saw that EPW could not calculate mobility for 2d materials and if wanted to do it, had to treat it as 3d, put more k points along the vacuum direction. So I used 8*8*2 mesh. But it always failed in the restart section.

Output file with the following information.
" Fermi Surface thickness = 10.000000 eV
This is computed with respect to the fine Fermi level -4.732800 eV
Only states between -14.732800 eV and 5.267200 eV will be included

Progression iq (fine) = 50/ 1024
Progression iq (fine) = 100/ 1024
Progression iq (fine) = 150/ 1024
Progression iq (fine) = 200/ 1024
Progression iq (fine) = 250/ 1024
Progression iq (fine) = 300/ 1024
Progression iq (fine) = 350/ 1024
Progression iq (fine) = 400/ 1024
Progression iq (fine) = 450/ 1024
Progression iq (fine) = 500/ 1024
Progression iq (fine) = 550/ 1024
Progression iq (fine) = 600/ 1024
Progression iq (fine) = 650/ 1024
Progression iq (fine) = 700/ 1024
Progression iq (fine) = 750/ 1024
Progression iq (fine) = 800/ 1024
Progression iq (fine) = 850/ 1024
Progression iq (fine) = 900/ 1024
Progression iq (fine) = 950/ 1024
Progression iq (fine) = 1000/ 1024
Creation of a restart point"

Then it could not continue the calculation and killed.
I wonder if there are any successful calculation for 2d materials. If putting more k-points along the vacuum direction and treating it as 3d, it must be okay. Or just maybe work it. And I also want to know the reason why epw couldn't calculate mobility for 2d materials.

If anyone could answer my questions, I would appreciate very much, since I have been confused for a long time.

Best wishes,
Chou

Author:  sponce [ Mon Nov 19, 2018 5:33 pm ]
Post subject:  Re: Possibility to calculate mobility for 2d materials using

Hello Chou,

Indeed it should be possible to do mobility in 2d materials by treating them as 3D.

In your case it seems there is a crash when the code try to write data to file (at the restart point).

Most likely if you change the input parameter "restart_freq=500" it will crash at 500 q-point.

Please give more info about the crash and maybe provide input/output to help assess the issue.

Best wishes,
Samuel

Author:  CHOU [ Wed Nov 21, 2018 8:55 am ]
Post subject:  Re: Possibility to calculate mobility for 2d materials using

Hello Samuel,

Thank you very much for your reply.
Here is my input file.

scf.in

&CONTROL
calculation='scf'
restart_mode='from_scratch'
outdir='./'
pseudo_dir='/home/k0116/k011622/pseudo'
prefix= 'MoO3'
etot_conv_thr=1.0D-09
forc_conv_thr=1.0D-09
wf_collect=.true.
tstress=.true.
tprnfor=.true.
/
&SYSTEM
ibrav=8
celldm(1)=6.954407601
celldm(2)=1.069190824
celldm(3)=7.625614123
nat=8
ntyp=2
ecutwfc=90.0
nbnd =60
nspin=1
/
&ELECTRONS
conv_thr=1.0e-09
mixing_beta=0.4
/
ATOMIC_SPECIES
Mo 95.94 Mo_ONCV_PBE-1.0.upf
O 15.999 O_ONCV_PBE-1.0.upf
ATOMIC_POSITIONS crystal
Mo 0.750000000 0.571487762 -0.054029957
Mo 0.250000000 0.428512280 0.054029957
O 0.250000000 0.497852060 -0.03412717
O 0.750000000 0.502148112 0.034127155
O 0.750000000 0.015453203 -0.046343122
O 0.250000000 0.984546858 0.046343102
O 0.750000000 0.531000473 -0.113557105
O 0.250000000 0.468999251 0.113557105
K_POINTS automatic
8 8 2 0 0 0

nscf.in

&CONTROL
calculation='nscf'
restart_mode='from_scratch'
outdir='./'
pseudo_dir='/home/k0116/k011622/pseudo'
prefix= 'MoO3'
etot_conv_thr=1.0D-09
forc_conv_thr=1.0D-09
wf_collect=.true.
tstress=.true.
tprnfor=.true.
/
&SYSTEM
ibrav=8
celldm(1)=6.954407601
celldm(2)=1.069190824
celldm(3)=7.625614123
nat=8
ntyp=2
ecutwfc=90.0
nbnd =60
nspin=1
nr1=50
nr2=54
nr3=380
/
&ELECTRONS
conv_thr=1.0e-09
mixing_beta=0.4
/
ATOMIC_SPECIES
Mo 95.94 Mo_ONCV_PBE-1.0.upf
O 15.999 O_ONCV_PBE-1.0.upf
ATOMIC_POSITIONS crystal
Mo 0.750000000 0.571487762 -0.054029957
Mo 0.250000000 0.428512280 0.054029957
O 0.250000000 0.497852060 -0.03412717
O 0.750000000 0.502148112 0.034127155
O 0.750000000 0.015453203 -0.046343122
O 0.250000000 0.984546858 0.046343102
O 0.750000000 0.531000473 -0.113557105
O 0.250000000 0.468999251 0.113557105
K_POINTS crystal
128
0.0 0.0 0.0 0.0078125
0.0 0.0 0.5 0.0078125
0.0 0.125 0.0 0.0078125
0.0 0.125 0.5 0.0078125
0.0 0.25 0.0 0.0078125
0.0 0.25 0.5 0.0078125
0.0 0.375 0.0 0.0078125
0.0 0.375 0.5 0.0078125
0.0 0.5 0.0 0.0078125
0.0 0.5 0.5 0.0078125
0.0 0.625 0.0 0.0078125
0.0 0.625 0.5 0.0078125
0.0 0.75 0.0 0.0078125
0.0 0.75 0.5 0.0078125
0.0 0.875 0.0 0.0078125
0.0 0.875 0.5 0.0078125
0.125 0.0 0.0 0.0078125
0.125 0.0 0.5 0.0078125
0.125 0.125 0.0 0.0078125
0.125 0.125 0.5 0.0078125
0.125 0.25 0.0 0.0078125
0.125 0.25 0.5 0.0078125
0.125 0.375 0.0 0.0078125
0.125 0.375 0.5 0.0078125
0.125 0.5 0.0 0.0078125
0.125 0.5 0.5 0.0078125
0.125 0.625 0.0 0.0078125
0.125 0.625 0.5 0.0078125
0.125 0.75 0.0 0.0078125
0.125 0.75 0.5 0.0078125
0.125 0.875 0.0 0.0078125
0.125 0.875 0.5 0.0078125
0.25 0.0 0.0 0.0078125
0.25 0.0 0.5 0.0078125
0.25 0.125 0.0 0.0078125
0.25 0.125 0.5 0.0078125
0.25 0.25 0.0 0.0078125
0.25 0.25 0.5 0.0078125
...



epw.in
--
&inputepw
prefix= 'MoO3'
amass(1)= 95.94
amass(2)= 15.999
outdir='./'
iverbosity =0
elph = .true.
epbwrite = .true.
epbread = .false.
lpolar = .true.
epwwrite = .true.
epwread = .false.
nbndsub = 28
nbndskip = 14

lifc = .true.
asr_typ = simple

!wannier control tags
wannierize = .true.
num_iter = 1000
iprint = 2
dis_win_min= -11.73
dis_win_max= 4.775
dis_froz_min = -11.73
dis_froz_max = -0.165

proj(1) = 'Mo:d'
proj(2) = 'O:p'

wdata(1) = 'bands_plot = .true.'
wdata(2) = 'begin kpoint_path'
wdata(3) = 'G 0.000 0.000 0.000 X 0.500 0.000 0.000'
wdata(4) = 'X 0.500 0.000 0.000 S 0.500 0.500 0.000'
wdata(5) = 'S 0.500 0.500 0.000 Y 0.000 0.500 0.000'
wdata(6) = 'Y 0.000 0.500 0.000 G 0.000 0.000 0.000'
wdata(7) ='end kpoint_path'
wdata(8) ='bands_plot_format = gnuplot'
wdata(9) ='dis_num_iter = 1000 ' !set maximum iteration number
wdata(10) = 'guiding_centres = .true.'
wdata(11) = 'num_print_cycles = 10'
wdata(12) = 'dis_mix_ratio = 1.0'
!wdata(13) = 'use_ws_distance = T'



!epc calculation control tags
elecselfen = .false.
phonselfen = .false.
a2f = .false.
fsthick = 10.0 ! eV
eptemp = 100 ! K
degaussw = 0.01 ! eV
efermi_read = .true.
fermi_energy = -4.7328 !K valence top
dvscf_dir = '/home/k0116/k011622/MoO3/2d/ph/phonon3/save'

mp_mesh_k =.true.
band_plot = .true
!Wannier fine mesh
filkf = '/home/k0116/k011622/MoO3/2d/mesh/path1.dat'
!nkf1 = 80 !replace by appropriate number
!nkf2 = 80 !replace by appropriate number
!nkf3 = 1 !replace by appropriate number
!if you want to calculate on specific path, please use
filqf = '/home/k0116/k011622/MoO3/2d/mesh/path1.dat'
!nqf1 = 120 !replace by appropriate number
!nqf2 = 120 !replace by appropriate number
!nqf3 = 1 !replace by appropriate number

!original mesh
nk1 =8
nk2 =8
nk3 =2
nq1 =8
nq2 =8
nq3 =2
/
50 cartesian
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.000000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
0.000000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
0.000000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
0.000000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
0.000000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
0.000000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
0.000000000000000E+00 0.350732527423935E+00 -0.655684895583589E-01
0.000000000000000E+00 -0.467643369898580E+00 0.000000000000000E+00
0.000000000000000E+00 -0.467643369898580E+00 -0.655684895583589E-01
0.125000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.125000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
0.125000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
0.125000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
0.125000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
0.125000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
0.125000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
0.125000000000000E+00 0.350732527423935E+00 -0.655684895583589E-01
0.125000000000000E+00 -0.467643369898580E+00 0.000000000000000E+00
0.125000000000000E+00 -0.467643369898580E+00 -0.655684895583589E-01
0.250000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.250000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
0.250000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
0.250000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
0.250000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
0.250000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
0.250000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
0.250000000000000E+00 0.350732527423935E+00 -0.655684895583589E-01
0.250000000000000E+00 -0.467643369898580E+00 0.000000000000000E+00
0.250000000000000E+00 -0.467643369898580E+00 -0.655684895583589E-01
0.375000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.375000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
0.375000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
0.375000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
0.375000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
0.375000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
0.375000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
0.375000000000000E+00 0.350732527423935E+00 -0.655684895583589E-01
0.375000000000000E+00 -0.467643369898580E+00 0.000000000000000E+00
0.375000000000000E+00 -0.467643369898580E+00 -0.655684895583589E-01
-0.500000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
-0.500000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
-0.500000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
-0.500000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
-0.500000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
-0.500000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
-0.500000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
-0.500000000000000E+00 0.350732527423935E+00 -0.655684895583589E-01
-0.500000000000000E+00 -0.467643369898580E+00 0.000000000000000E+00
-0.500000000000000E+00 -0.467643369898580E+00 -0.655684895583589E-01




epw2.in
--
&inputepw
prefix= 'MoO3'
amass(1)= 95.94
amass(2)= 15.999
outdir='./'
iverbosity =0
elph = .true.
epbwrite = .false.
epbread = .false.
lpolar = .true.
epwwrite = .false.
epwread = .true.
nbndsub = 28
nbndskip = 14

restart = .true.
restart_freq= 1024
kmaps = .true.

lifc = .true.
asr_typ = simple

!wannier control tags
wannierize = .false.
num_iter = 1000
iprint = 2
dis_win_min= -11.73
dis_win_max= 4.775
dis_froz_min = -11.73
dis_froz_max = -0.165

proj(1) = 'Mo:d'
proj(2) = 'O:p'

wdata(1) = 'bands_plot = .true.'
wdata(2) = 'begin kpoint_path'
wdata(3) = 'G 0.000 0.000 0.000 X 0.500 0.000 0.000'
wdata(4) = 'X 0.500 0.000 0.000 S 0.500 0.500 0.000'
wdata(5) = 'S 0.500 0.500 0.000 Y 0.000 0.500 0.000'
wdata(6) = 'Y 0.000 0.500 0.000 G 0.000 0.000 0.000'
wdata(7) ='end kpoint_path'
wdata(8) ='bands_plot_format = gnuplot'
wdata(9) ='dis_num_iter = 1000 ' !set maximum iteration number
wdata(10) = 'guiding_centres = .true.'
wdata(11) = 'num_print_cycles = 10'
wdata(12) = 'dis_mix_ratio = 1.0'
!wdata(13)= 'use_ws_distance = T'

!mobility
scattering = .true.
scattering_serta = .true.
int_mob = .true.
carrier = .true.
ncarrier = 1E13
scissor = 0.1
nstemp = 5
tempsmin = 100
tempsmax = 500

!epc calculation control tags
elecselfen = .false.
phonselfen = .false.
a2f = .false.
fsthick = 10.0 ! eV
eptemp = 100 ! K
degaussw = 0.01 ! eV
efermi_read = .true.
fermi_energy = -4.7328 !K valence top
dvscf_dir = '/home/k0116/k011622/MoO3/2d/ph/phonon3/save'

mp_mesh_k =.true.
!band_plot = .true
!Wannier fine mesh
!filkf = '/home/k0116/k011622/MoO3/2d/mesh/path1.dat'
nkf1 = 16 !replace by appropriate number
nkf2 = 16 !replace by appropriate number
nkf3 = 4 !replace by appropriate number
!if you want to calculate on specific path, please use
!filqf = '/home/k0116/k011622/MoO3/2d/mesh/path1.dat'
nqf1 = 16 !replace by appropriate number
nqf2 = 16 !replace by appropriate number

nqf3 = 4 !replace by appropriate number

!original mesh
nk1 =8
nk2 =8
nk3 =2
nq1 =8
nq2 =8
nq3 =2
/
50 cartesian
0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.000000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
0.000000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
0.000000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
0.000000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
0.000000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
0.000000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
0.000000000000000E+00 0.350732527423935E+00 -0.655684895583589E-01
0.000000000000000E+00 -0.467643369898580E+00 0.000000000000000E+00
0.000000000000000E+00 -0.467643369898580E+00 -0.655684895583589E-01
0.125000000000000E+00 0.000000000000000E+00 0.000000000000000E+00
0.125000000000000E+00 0.000000000000000E+00 -0.655684895583589E-01
0.125000000000000E+00 0.116910842474645E+00 0.000000000000000E+00
0.125000000000000E+00 0.116910842474645E+00 -0.655684895583589E-01
0.125000000000000E+00 0.233821684949290E+00 0.000000000000000E+00
0.125000000000000E+00 0.233821684949290E+00 -0.655684895583589E-01
0.125000000000000E+00 0.350732527423935E+00 0.000000000000000E+00
..

For output file, I think scf.out , nscf.out and epw.out are all normal. And epw2.out just like I showed, suddenly killed itself.
If you can help with it, I will appreciate it very much.

Best wishes,
Chou

Author:  sponce [ Thu Nov 22, 2018 10:40 am ]
Post subject:  Re: Possibility to calculate mobility for 2d materials using

Dear CHOU,

I do not see anything wrong in your input I think.

You can try:
- mp_mesh_k =.false. (disable k-point symmetry), much slower
- run with 1 cpu interactively with restart_freq= 2, this way it will crash very quickly. Hopefully the code will tell you at which line exactly it crashed.
- try using the most recent development version of EPW (from gitlab).

Best wishes,
Samuel

Author:  CHOU [ Thu Dec 06, 2018 9:31 am ]
Post subject:  Re: Possibility to calculate mobility for 2d materials using

Dear Samuel,

Thank you very much for your ideas.
I have solved the problem and got the mobility successfully with defaulting the mp_mesh_k.

Best wishes,
CHOU

Author:  CHOU [ Thu Jan 10, 2019 9:36 am ]
Post subject:  Re: Possibility to calculate mobility for 2d materials using

Dear Samuel,

Although I calculated the mobility of 2d materials, but the mobility in the z axis was very large, which is not true for the real situation. Is it okay if I just pick up the mobility in x-axis and y-axis to analyze the materials and ignore the z-axis' mobility?
Or I change the codes in transport.f90
CALL rdiagh(3,Sigma_m(:,:,itemp),3,sigma_eig,sigma_vect)
to
CALL rdiagh(2,Sigma_m(:,:,itemp),2,sigma_eig,sigma_vect),
to only include the xy part for calculation, is it true for 2d materials?

Best wishes,
Chou

Author:  sponce [ Thu Feb 14, 2019 2:22 pm ]
Post subject:  Re: Possibility to calculate mobility for 2d materials using

I would recommand not to use diagonalization at all (i.e. do not call CALL rdiagh).
However in that case you should also print off diagonal elements to make sure that they are small.

Best wishes,
Samuel

Page 1 of 1 All times are UTC
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/