Merge branch 'develop' into 'develop'

Implementation of plotting Wannier functions without writing and reading UNK files

See merge request QEF/q-e!864
This commit is contained in:
Samuel Poncé 2020-04-10 08:01:26 +00:00
commit a2287c53bd
15 changed files with 1174 additions and 276 deletions

View File

@ -50,7 +50,8 @@
lphase, omegamin, omegamax, omegastep, n_r, &
mob_maxiter, use_ws, epmatkqread, selecqread, &
scdm_proj, scdm_entanglement, scdm_mu, scdm_sigma,&
assume_metal
assume_metal, wannier_plot_scale, reduce_unk, &
wannier_plot_supercell, wannier_plot_radius
! Added for polaron calculations. Originally by Danny Sio, modified by Chao Lian.
USE epwcom, ONLY : mob_maxiter, use_ws, epmatkqread, selecqread, &
wfcelec, model_vertex , polaron_wf, r01, r02, r03,&
@ -146,6 +147,7 @@
CALL mp_bcast(selecqread , meta_ionode_id, world_comm)
CALL mp_bcast(scdm_proj , meta_ionode_id, world_comm)
CALL mp_bcast(assume_metal , meta_ionode_id, world_comm)
CALL mp_bcast(reduce_unk , meta_ionode_id, world_comm)
!
! integers
!
@ -184,6 +186,7 @@
CALL mp_bcast(scr_typ , meta_ionode_id, world_comm)
CALL mp_bcast(bnd_cum , meta_ionode_id, world_comm)
CALL mp_bcast(mob_maxiter , meta_ionode_id, world_comm)
CALL mp_bcast(wannier_plot_supercell, meta_ionode_id, world_comm)
!
! REAL*8
!
@ -225,6 +228,8 @@
CALL mp_bcast(nc , meta_ionode_id, world_comm)
CALL mp_bcast(scdm_mu , meta_ionode_id, world_comm)
CALL mp_bcast(scdm_sigma , meta_ionode_id, world_comm)
CALL mp_bcast(wannier_plot_radius, meta_ionode_id, world_comm)
CALL mp_bcast(wannier_plot_scale, meta_ionode_id, world_comm)
!
! characters
!

View File

@ -47,7 +47,8 @@
ngxx, &! Maximum number of G-vectors over all pools
ngxxf, &! Maximum number of G-vectors over all pools for k+q folding
ig_s, &! First G index within each core in case of G parallelization
ig_e ! Last G index within each core in case of G parallelization
ig_e, &! Last G index within each core in case of G parallelization
num_wannier_plot ! Number of Wannier functions to plot
INTEGER, ALLOCATABLE :: &!
igk(:), &! Index for k+G vector
igkq(:), &! Index for k+q+G vector
@ -59,7 +60,8 @@
gmap(:), &! the map G -> G-G_0 in the large (density) G vectors set, for every G_0
ixkqf_tr(:), &! Mapping matrix from k+q (where q is full BZ) to IBZ
s_bztoibz_full(:), &! Rotation that brink that k-point from BZ to IBZ
mapg(:,:,:) ! Map between FFT grid and G-vector index
mapg(:,:,:), &! Map between FFT grid and G-vector index
wanplotlist(:) ! List of Wannier functions to plot
REAL(KIND = DP) :: &!
efnew, &! Fermi level on the fine grid. Added globaly for efficiency reason
deltaq, &! Displacement of fine-mesh k-points for velocity corrections

View File

@ -56,7 +56,9 @@
restart_filq, prtgkk, nel, meff, epsiheg, lphase, &
omegamin, omegamax, omegastep, n_r, lindabs, mob_maxiter, &
auto_projections, scdm_proj, scdm_entanglement, scdm_mu, &
scdm_sigma, assume_metal
scdm_sigma, assume_metal, wannier_plot, wannier_plot_list, &
wannier_plot_supercell, wannier_plot_scale, reduce_unk, &
wannier_plot_radius
! Added for polaron calculations. Originally by Danny Sio, modified by Chao Lian.
USE epwcom, ONLY : wfcelec, restart_polaron, spherical_cutoff, &
model_vertex, conv_thr_polaron, n_dop, &
@ -68,7 +70,7 @@
init_plrn_wf, niterPlrn, nDOS_plrn, emax_plrn, emin_plrn, &
sigma_edos_plrn, sigma_pdos_plrn, pmax_plrn, pmin_plrn
USE klist_epw, ONLY : xk_all, xk_loc, xk_cryst, isk_all, isk_loc, et_all, et_loc
USE elph2, ONLY : elph
USE elph2, ONLY : elph, num_wannier_plot, wanplotlist
USE constants_epw, ONLY : ryd2mev, ryd2ev, ev2cmm1, kelvin2eV, zero, eps20, ang2m
USE io_files, ONLY : tmp_dir, prefix
USE control_flags, ONLY : iverbosity, modenum, gamma_only
@ -77,11 +79,12 @@
USE partial, ONLY : atomo, nat_todo
USE constants, ONLY : AMU_RY, eps16
USE mp_global, ONLY : my_pool_id, me_pool
USE io_global, ONLY : meta_ionode, meta_ionode_id, ionode_id, stdout
USE io_global, ONLY : meta_ionode, meta_ionode_id, stdout
USE io_var, ONLY : iunkf, iunqf
USE noncollin_module, ONLY : npol, noncolin
USE wvfct, ONLY : npwx
USE paw_variables, ONLY : okpaw
USE io_epw, ONLY : param_get_range_vector
#if defined(__NAG)
USE F90_UNIX_ENV, ONLY : iargc, getarg
#endif
@ -144,7 +147,8 @@
scatread, restart, restart_step, restart_filq, prtgkk, nel, meff, &
epsiheg, lphase, omegamin, omegamax, omegastep, n_r, lindabs, &
mob_maxiter, auto_projections, scdm_proj, scdm_entanglement, scdm_mu, &
scdm_sigma, assume_metal, &
scdm_sigma, assume_metal, wannier_plot, wannier_plot_list, reduce_unk, &
wannier_plot_supercell, wannier_plot_scale, wannier_plot_radius, &
! Added for polaron calculations. Originally by Danny Sio, modified by Chao Lian.
wfcelec, restart_polaron, spherical_cutoff, model_vertex, start_mode, &
conv_thr_polaron, polaron_wf, r01, r02, r03, num_cbands, start_band, &
@ -185,7 +189,7 @@
! epbread : read epmatq array from .epb files
! epbwrite : write epmatq array to .epb files
! nbndskip : number of bands to be skipped from the original Hamitonian (nfirstwin-1 in Marzari's notation)
! nbndskip is not an input any more. It is now automatically calculated in Wannierization step.
! [HL 02/2020] nbndskip is not an input any more. It is now automatically calculated in Wannierization step.
! For backward compatibility, nbndskip still can be entered as an input, but ignored with warning message.
! epwread : read all quantities in Wannier representation from file epwdata.fmt
! epwwrite : write all quantities in Wannier representation to file epwdata.fmt
@ -330,6 +334,15 @@
!
! Added by Felix Goudreault
! assume_metal : If .TRUE. => we are dealing with a metal
!
! Added by HL
! wannier_plot : If .TRUE., plot Wannier functions
! wannier_plot_list : Field read for parsing Wannier function list
! wannier_plot_supercell : Size of supercell for plotting Wannier functions
! wannier_plot_scale : Scaling parameter for cube files
! wannier_plot_radius : Cut-off radius for plotting Wannier functions
! reduce_unk : If .TRUE., plot Wannier functions on reduced grids
!
nk1tmp = 0
nk2tmp = 0
nk3tmp = 0
@ -398,6 +411,12 @@
bands_skipped= ''
wdata(:) = ''
iprint = 2
wannier_plot = .FALSE.
wannier_plot_scale = 1.0d0
wannier_plot_radius = 3.5d0
wannier_plot_supercell = (/5,5,5/)
wannier_plot_list = ''
reduce_unk = .FALSE.
wmin = 0.d0
wmax = 0.3d0
eps_acustic = 5.d0 ! cm-1
@ -579,6 +598,33 @@
IF (meta_ionode) READ(5, inputepw, ERR = 200, IOSTAT = ios)
#endif
200 CALL errore('epw_readin', 'reading input_epw namelist', ABS(ios))
!
IF (wannier_plot) THEN
IF (wannier_plot_radius < 0.0d0) &
CALL errore('epw_readin', 'Error: wannier_plot_radius must be positive', 1)
IF (wannier_plot_scale < 0.0d0) &
CALL errore('epw_readin', 'Error: wannier_plot_scale must be positive', 1)
IF (ANY(wannier_plot_supercell <= 0)) &
CALL errore('epw_readin', &
'Error: Three positive integers must be explicitly provided &
for wannier_plot_supercell', 1)
CALL param_get_range_vector(wannier_plot_list, num_wannier_plot, .TRUE.)
IF (num_wannier_plot == 0) THEN
num_wannier_plot = nbndsub
ALLOCATE(wanplotlist(num_wannier_plot), STAT = ierr)
IF (ierr /= 0) CALL errore('epw_readin', 'Error allocating wanplotlist', 1)
DO i = 1, num_wannier_plot
wanplotlist(i) = i
ENDDO
ELSE
ALLOCATE(wanplotlist(num_wannier_plot), STAT = ierr)
IF (ierr /= 0) CALL errore('epw_readin', 'Error allocating wanplotlist', 1)
CALL param_get_range_vector(wannier_plot_list, num_wannier_plot, .FALSE., wanplotlist)
IF (ANY(wanplotlist < 1) .OR. ANY(wanplotlist > nbndsub)) &
CALL errore('epw_readin', &
'Error: wannier_plot_list asks for a non-valid wannier function to be plotted', 1)
ENDIF
ENDIF
!
nk1tmp = nk1
nk2tmp = nk2
@ -750,6 +796,15 @@
dvscf_dir = TRIM(dvscf_dir) // '/'
!
400 CONTINUE
!
CALL mp_bcast(wannier_plot, meta_ionode_id, world_comm)
CALL mp_bcast(num_wannier_plot, meta_ionode_id, world_comm)
IF ((wannier_plot) .AND. (.NOT. meta_ionode)) THEN
ALLOCATE(wanplotlist(num_wannier_plot), STAT = ierr)
IF (ierr /= 0) CALL errore('epw_readin', 'Error allocating wanplotlist', 1)
ENDIF
IF (wannier_plot) CALL mp_bcast(wanplotlist, meta_ionode_id, world_comm)
!
CALL bcast_epw_input()
!
! Here we finished the reading of the input file.
@ -786,10 +841,10 @@
! bring k-points from cartesian to crystal coordinates
CALL cryst_to_cart(nkstot, xk_cryst, at, -1)
! Only master has the correct full list of kpt. Therefore bcast to all cores
CALL mp_bcast(xk_all, ionode_id, world_comm)
CALL mp_bcast(et_all, ionode_id, world_comm)
CALL mp_bcast(isk_all, ionode_id, world_comm)
CALL mp_bcast(xk_cryst, ionode_id, world_comm)
CALL mp_bcast(xk_all, meta_ionode_id, world_comm)
CALL mp_bcast(et_all, meta_ionode_id, world_comm)
CALL mp_bcast(isk_all, meta_ionode_id, world_comm)
CALL mp_bcast(xk_cryst, meta_ionode_id, world_comm)
!
! We define the local list of kpt
ALLOCATE(xk_loc(3, nks), STAT = ierr)

View File

@ -247,6 +247,14 @@
!! change in energy for each additional smearing in the selfen_phon
!
! Wannierization
CHARACTER(LEN = 255) :: wannier_plot_list
!! Field read for parsing Wannier function list
LOGICAL :: wannier_plot
!! if .TRUE. plot Wannier functions
LOGICAL :: reduce_unk
!! if .TRUE. plot Wannier functions on reduced grids
INTEGER :: wannier_plot_supercell(3)
!! Size of supercell for plotting Wannier functions
REAL(KIND = DP) :: dis_win_min
!! min energy of the Wannier disentanglement window
REAL(KIND = DP) :: dis_win_max
@ -259,6 +267,10 @@
!! parameter for Wannier functions via SCDM algorithm
REAL(KIND = DP) :: scdm_sigma
!! parameter for Wannier functions via SCDM algorithm
REAL(KIND = DP) :: wannier_plot_scale
!! Scaling parameter for cube files
REAL(KIND = DP) :: wannier_plot_radius
!! Cut-off radius for plotting Wannier functions
!
! Superconductivity
REAL(KIND = DP) :: eps_acustic

View File

@ -2101,6 +2101,117 @@
!----------------------------------------------------------------------------
END SUBROUTINE openfilepw
!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------
SUBROUTINE param_get_range_vector(field, length, lcount, i_value)
!----------------------------------------------------------------------------
!!
!! Read a range vector eg. 1,2,3,4-10 or 1 3 400:100
!! if(lcount) we return the number of states in length
!!
!! HL - April 2020
!! Imported and adapted from the same name of subroutine in parameters.F90
!! in the directory of src in Wannier90
!!
!----------------------------------------------------------------------------
!
IMPLICIT NONE
!
CHARACTER(*), INTENT(in) :: field
!! Field read for parsing
INTEGER, INTENT(inout) :: length
!! Number of states
LOGICAL, INTENT(in) :: lcount
!! If T only count states
INTEGER, OPTIONAL, INTENT(out) :: i_value(length)
!! States specified in range vector
!
INTEGER :: loop
!! Loop index
INTEGER :: num1
!! Integer number read
INTEGER :: num2
!! Integer number read
INTEGER :: i_punc
!! Position returned after scanning punctuation marks
INTEGER :: counter
!! Counter index
INTEGER :: i_digit
!! Position returned after scanning numbers
INTEGER :: loop_r
!! Loop index
INTEGER :: range_size
!! Size of range
CHARACTER(LEN = 255) :: dummy
!! Copy of field read for parsing
CHARACTER(LEN = 10), PARAMETER :: c_digit = "0123456789"
CHARACTER(LEN = 2), PARAMETER :: c_range = "-:"
CHARACTER(LEN = 3), PARAMETER :: c_sep = " ,;"
CHARACTER(LEN = 5), PARAMETER :: c_punc = " ,;-:"
CHARACTER(LEN = 5) :: c_num1
!! Number read
CHARACTER(LEN = 5) :: c_num2
!! Number read
!
IF (lcount .AND. PRESENT(i_value)) &
CALL errore('param_get_range_vector', 'incorrect call', 1)
!
dummy = field
dummy = ADJUSTL(dummy)
!
counter = 0
IF (LEN_TRIM(dummy) == 0) THEN
length = counter
RETURN
ENDIF
!
DO
i_punc = SCAN(dummy, c_punc)
IF (i_punc == 0) &
CALL errore('param_get_range_vector', 'Error parsing field', 1)
c_num1 = dummy(1:i_punc - 1)
READ(c_num1, *, ERR = 101, END = 101) num1
dummy = ADJUSTL(dummy(i_punc:))
!look for range
IF (SCAN(dummy, c_range) == 1) THEN
i_digit = SCAN(dummy, c_digit)
dummy = ADJUSTL(dummy(i_digit:))
i_punc = SCAN(dummy, c_punc)
c_num2 = dummy(1:i_punc - 1)
READ(c_num2, *, ERR = 101, END = 101) num2
dummy = ADJUSTL(dummy(i_punc:))
range_size = ABS(num2 - num1) + 1
DO loop_r = 1, range_size
counter = counter + 1
IF (.NOT. lcount) i_value(counter) = MIN(num1, num2) + loop_r - 1
ENDDO
ELSE
counter = counter + 1
IF (.NOT. lcount) i_value(counter) = num1
ENDIF
IF (SCAN(dummy, c_sep) == 1) dummy = ADJUSTL(dummy(2:))
IF (SCAN(dummy, c_range) == 1) &
CALL errore('param_get_range_vector', 'Error parsing field: incorrect range', 1)
IF (INDEX(dummy, ' ') == 1) EXIT
ENDDO
!
IF (lcount) length = counter
IF (.NOT. lcount) THEN
DO loop = 1, counter - 1
DO loop_r = loop + 1, counter
IF (i_value(loop) == i_value(loop_r)) &
CALL errore('param_get_range_vector', 'Error parsing field: duplicate values', 1)
ENDDO
ENDDO
ENDIF
!
RETURN
!
101 CALL errore('param_get_range_vector', 'Error parsing field', 1)
!
!----------------------------------------------------------------------------
END SUBROUTINE param_get_range_vector
!----------------------------------------------------------------------------
!------------------------------------------------------------------------------
END MODULE io_epw
!------------------------------------------------------------------------------

File diff suppressed because it is too large Load Diff

View File

@ -27,9 +27,6 @@
!!
LOGICAL :: write_unk
!! Set to .TRUE. to write the periodic part of the Bloch functions. Default is .FALSE.
LOGICAL :: reduce_unk
!! Set to .TRUE. to reduce file-size (and resolution) of Bloch functions by a factor of 8.
!! Default is .FALSE. (only relevant if write_unk=.TRUE.)
LOGICAL :: wvfn_formatted
!! Set to .TRUE. to write formatted wavefunctions. Default is .FALSE. (only relevant if write_unk=.TRUE.)
LOGICAL :: write_amn

View File

@ -147,13 +147,6 @@
!
WRITE(iuwinfil, '("num_wann = ", i3)') nbndsub
WRITE(iuwinfil, '("iprint = ", i3)') iprint
!
! SP: You can have more bands in nscf.in than in
! nbndskip+nbndsub. In which case the dis_win_max can be larger than
! nbndskip+nbndsub. This is crucial for disantanglement.
IF (dis_froz_min < MINVAL(et_tmp)) dis_froz_min = MINVAL(et_tmp)
IF (dis_froz_max > MAXVAL(et_tmp)) dis_froz_max = MAXVAL(et_tmp)
!
WRITE(iuwinfil, '("dis_win_min = ", f18.12)') dis_win_min
WRITE(iuwinfil, '("dis_win_max = ", f18.12)') dis_win_max
WRITE(iuwinfil, '("dis_froz_min = ", f18.12)') dis_froz_min

View File

@ -181,7 +181,8 @@ clean:
epw_*/epsilon2_indabs.dat epw_*/epsilon2_indabs_lorenz.dat \
epw_mob_ibte_sym/save epw_*/*.bvec epw_*/*.fc epw_*/*.xml epw_*/*.labelinfo.dat \
epw_mob_ibte/save epw_mob/save epw_*/Fepmatkq1 epw_*/Fepmatkqcb1 epw_*/Fsparse \
epw_*/Fsparsecb epw_*/inv_taucb_tmp epw_*/inv_tau_tmp epw_mob_polar/save
epw_*/Fsparsecb epw_*/inv_taucb_tmp epw_*/inv_tau_tmp epw_mob_polar/save \
epw_base/*.cube
# Special cases for EPW
@rm -rf epw_base/save epw_super/save epw_pl/save/ epw_polar/save/ \

View File

@ -402,6 +402,7 @@ The following features of the code are tested:
- Test band parallelism, etf_mem 2 (epw6.in)
- Test restart feature (epw7.in)
- Test cumulant (epw8.in)
- Test Wannier function plot (epw11.in)
#################
# epw_metal: Pb #

View File

@ -0,0 +1,251 @@
``:oss/
`.+s+. .+ys--yh+ `./ss+.
-sh//yy+` +yy +yy -+h+-oyy
-yh- .oyy/.-sh. .syo-.:sy- /yh
`.-.` `yh+ -oyyyo. `/syys: oys `.`
`/+ssys+-` `sh+ ` oys` .:osyo`
-yh- ./syyooyo` .sys+/oyo--yh/
`yy+ .-:-. `-/+/:` -sh-
/yh. oys
``..---hho---------` .---------..` `.-----.` -hd+---.
`./osmNMMMMMMMMMMMMMMMs. +NNMMMMMMMMNNmh+. yNMMMMMNm- oNMMMMMNmo++:`
+sy--/sdMMMhyyyyyyyNMMh- .oyNMMmyyyyyhNMMm+` -yMMMdyyo:` .oyyNMMNhs+syy`
-yy/ /MMM+.`-+/``mMMy- `mMMh:`````.dMMN:` `MMMy-`-dhhy```mMMy:``+hs
-yy+` /MMMo:-mMM+`-oo/. mMMh: `dMMN/` dMMm:`dMMMMy..MMMo-.+yo`
.sys`/MMMMNNMMMs- mMMmyooooymMMNo: oMMM/sMMMMMM++MMN//oh:
`sh+/MMMhyyMMMs- `-` mMMMMMMMMMNmy+-` -MMMhMMMsmMMmdMMd/yy+
`-/+++oyy-/MMM+.`/hh/.`mNm:` mMMd+/////:-.` NMMMMMd/:NMMMMMy:/yyo/:.`
+os+//:-..-oMMMo:--:::-/MMMo. .-mMMd+---` hMMMMN+. oMMMMMo. `-+osyso:`
syo `mNMMMMMNNNNNNNNMMMo.oNNMMMMMNNNN:` +MMMMs:` dMMMN/` ``:syo
/yh` :syyyyyyyyyyyyyyyy+.`+syyyyyyyyo:` .oyys:` .oyys:` +yh
-yh- ```````````````` ````````` `` `` oys
-+h/------------------------::::::::://////++++++++++++++++++++++///////::::/yd:
shdddddddddddddddddddddddddddddhhhhhhhhyyyyyssssssssssssssssyyyyyyyhhhhhhhddddh`
S. Ponce, E. R. Margine, C. Verdi, and F. Giustino,
Comput. Phys. Commun. 209, 116 (2016)
Program EPW v.5.2.0 starts on 9Apr2020 at 19:34:20
This program is part of the open-source Quantum ESPRESSO suite
for quantum simulation of materials; please cite
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
URL http://www.quantum-espresso.org",
in publications or presentations arising from this work. More details at
http://www.quantum-espresso.org/quote
Parallel version (MPI), running on 4 processors
MPI processes distributed on 1 nodes
K-points division: npool = 4
Fft bands division: nmany = 1
Reading xml data from directory:
./diam.save/
IMPORTANT: XC functional enforced from input :
Exchange-correlation= PZ
( 1 1 0 0 0 0 0)
Any further DFT definition will be discarded
Please, verify this is what you really want
file C_3.98148.UPF: wavefunction(s) 3d renormalized
G-vector sticks info
--------------------
sticks: dense smooth PW G-vecs: dense smooth PW
Sum 367 367 121 4645 4645 893
Reading collected, re-writing distributed wavefunctions
Possibly too few bands at point 1 0.00000 0.00000 0.00000
Possibly too few bands at point 2 -0.33333 0.33333 -0.33333
Possibly too few bands at point 3 -0.66667 0.66667 -0.66667
Possibly too few bands at point 4 0.33333 0.33333 0.33333
Possibly too few bands at point 5 0.00000 0.66667 0.00000
Possibly too few bands at point 6 -0.33333 1.00000 -0.33333
Possibly too few bands at point 7 0.66667 0.66667 0.66667
--
bravais-lattice index = 2
lattice parameter (a_0) = 6.6425 a.u.
unit-cell volume = 73.2698 (a.u.)^3
number of atoms/cell = 2
number of atomic types = 1
kinetic-energy cut-off = 60.0000 Ry
charge density cut-off = 240.0000 Ry
Exchange-correlation= PZ
( 1 1 0 0 0 0 0)
celldm(1)= 6.64245 celldm(2)= 0.00000 celldm(3)= 0.00000
celldm(4)= 0.00000 celldm(5)= 0.00000 celldm(6)= 0.00000
crystal axes: (cart. coord. in units of a_0)
a(1) = ( -0.5000 0.0000 0.5000 )
a(2) = ( 0.0000 0.5000 0.5000 )
a(3) = ( -0.5000 0.5000 0.0000 )
reciprocal axes: (cart. coord. in units 2 pi/a_0)
b(1) = ( -1.0000 -1.0000 1.0000 )
b(2) = ( 1.0000 1.0000 1.0000 )
b(3) = ( -1.0000 1.0000 -1.0000 )
Atoms inside the unit cell:
Cartesian axes
site n. atom mass positions (a_0 units)
1 C 12.0108 tau( 1) = ( 0.00000 0.00000 0.00000 )
2 C 12.0108 tau( 2) = ( 0.25000 0.25000 0.25000 )
49 Sym.Ops. (with q -> -q+G )
G cutoff = 268.2305 ( 4645 G-vectors) FFT grid: ( 24, 24, 24)
number of k points= 27 gaussian broad. (Ry)= 0.0200 ngauss = 1
cart. coord. in units 2pi/a_0
k( 1) = ( 0.0000000 0.0000000 0.0000000), wk = 0.0740741
k( 2) = ( -0.3333333 0.3333333 -0.3333333), wk = 0.0740741
k( 3) = ( -0.6666667 0.6666667 -0.6666667), wk = 0.0740741
k( 4) = ( 0.3333333 0.3333333 0.3333333), wk = 0.0740741
k( 5) = ( 0.0000000 0.6666667 0.0000000), wk = 0.0740741
k( 6) = ( -0.3333333 1.0000000 -0.3333333), wk = 0.0740741
k( 7) = ( 0.6666667 0.6666667 0.6666667), wk = 0.0740741
k( 8) = ( 0.3333333 1.0000000 0.3333333), wk = 0.0740741
k( 9) = ( 0.0000000 1.3333333 0.0000000), wk = 0.0740741
k( 10) = ( -0.3333333 -0.3333333 0.3333333), wk = 0.0740741
k( 11) = ( -0.6666667 0.0000000 0.0000000), wk = 0.0740741
k( 12) = ( -1.0000000 0.3333333 -0.3333333), wk = 0.0740741
k( 13) = ( 0.0000000 0.0000000 0.6666667), wk = 0.0740741
k( 14) = ( -0.3333333 0.3333333 0.3333333), wk = 0.0740741
k( 15) = ( -0.6666667 0.6666667 -0.0000000), wk = 0.0740741
k( 16) = ( 0.3333333 0.3333333 1.0000000), wk = 0.0740741
k( 17) = ( 0.0000000 0.6666667 0.6666667), wk = 0.0740741
k( 18) = ( -0.3333333 1.0000000 0.3333333), wk = 0.0740741
k( 19) = ( -0.6666667 -0.6666667 0.6666667), wk = 0.0740741
k( 20) = ( -1.0000000 -0.3333333 0.3333333), wk = 0.0740741
k( 21) = ( -1.3333333 0.0000000 0.0000000), wk = 0.0740741
k( 22) = ( -0.3333333 -0.3333333 1.0000000), wk = 0.0740741
k( 23) = ( -0.6666667 -0.0000000 0.6666667), wk = 0.0740741
k( 24) = ( -1.0000000 0.3333333 0.3333333), wk = 0.0740741
k( 25) = ( 0.0000000 0.0000000 1.3333333), wk = 0.0740741
k( 26) = ( -0.3333333 0.3333333 1.0000000), wk = 0.0740741
k( 27) = ( -0.6666667 0.6666667 0.6666667), wk = 0.0740741
PseudoPot. # 1 for C read from file:
../../pseudo/C_3.98148.UPF
MD5 check sum: 8b65adcd36341f53911399f4b6efa59f
Pseudo is Norm-conserving, Zval = 4.0
Generated by new atomic code, or converted to UPF format
Using radial grid of 461 points, 2 beta functions with:
l(1) = 0
l(2) = 1
EPW : 0.06s CPU 0.07s WALL
EPW : 0.07s CPU 0.08s WALL
-------------------------------------------------------------------
Wannierization on 3 x 3 x 3 electronic grid
-------------------------------------------------------------------
Spin CASE ( default = unpolarized )
Initializing Wannier90
Initial Wannier projections
( 0.00000 0.00000 0.00000) : l = -3 mr = 1
( 0.00000 0.00000 0.00000) : l = -3 mr = 2
( 0.00000 0.00000 0.00000) : l = -3 mr = 3
( 0.00000 0.00000 0.00000) : l = -3 mr = 4
- Number of bands is ( 4)
- Number of total bands is ( 4)
- Number of excluded bands is ( 0)
- Number of wannier functions is ( 4)
- All guiding functions are given
Reading data about k-point neighbours
- All neighbours are found
AMN
k points = 27 in 4 pools
1 of 7 on ionode
2 of 7 on ionode
3 of 7 on ionode
4 of 7 on ionode
5 of 7 on ionode
6 of 7 on ionode
7 of 7 on ionode
AMN calculated
MMN
k points = 27 in 4 pools
1 of 7 on ionode
2 of 7 on ionode
3 of 7 on ionode
4 of 7 on ionode
5 of 7 on ionode
6 of 7 on ionode
7 of 7 on ionode
MMN calculated
Running Wannier90
Wannier Function centers (cartesian, alat) and spreads (ang):
( 0.12500 0.12500 0.12500) : 0.57702
( 0.12500 -0.12500 -0.12500) : 0.57702
( -0.12500 0.12500 -0.12500) : 0.57702
( -0.12500 -0.12500 0.12500) : 0.57702
Writing out Wannier function cube files
nr1s = 24, nr2s = 24, nr3s = 24
write_plot: wannier_plot_supercell = 3 3 3
Wannier Function Num: 1 Maximum Im/Re Ratio = 0.000013
Wannier Function Num: 3 Maximum Im/Re Ratio = 0.000013
Wannier Function Num: 4 Maximum Im/Re Ratio = 0.000014
cube files written
-------------------------------------------------------------------
WANNIER : 0.81s CPU 1.02s WALL ( 1 calls)
-------------------------------------------------------------------
Unfolding on the coarse grid
INITIALIZATION:
init_vloc : 0.00s CPU 0.00s WALL ( 1 calls)
init_us_1 : 0.00s CPU 0.00s WALL ( 1 calls)
Electron-Phonon interpolation
Total program execution
EPW : 0.88s CPU 1.10s WALL
Please consider citing:
S. Ponce, E. R. Margine, C. Verdi and F. Giustino, Comput. Phys. Commun. 209, 116 (2016)

View File

@ -0,0 +1,65 @@
--
&inputepw
prefix = 'diam'
amass(1) = 12.01078
outdir = './'
elph = .false.
kmaps = .false.
epbwrite = .true.
epbread = .false.
etf_mem = 1
vme = .false.
use_ws = .true.
epwwrite = .true.
epwread = .false.
nbndsub = 4
wannierize = .true.
num_iter = 300
iprint = 2
dis_win_max = 12
dis_froz_max= 7
proj(1) = 'f=0,0,0:l=-3'
wannier_plot= .true.
wannier_plot_supercell = 3 3 3
wannier_plot_list = '1, 3-4'
wannier_plot_radius = 2.5
elecselfen = .false.
nest_fn = .false.
phonselfen = .false.
a2f = .false.
fsthick = 15 ! eV
eptemp = 300 ! K (same as PRB 76, 165108)
degaussw = 1.0 ! eV
dvscf_dir = './save/'
nkf1 = 6
nkf2 = 6
nkf3 = 6
nqf1 = 6
nqf2 = 6
nqf3 = 6
nk1 = 3
nk2 = 3
nk3 = 3
nq1 = 3
nq2 = 3
nq3 = 3
/
4 cartesian
0.000000000000 0.000000000000 0.000000000000
-0.333333333333 0.333333333333 -0.333333333333
0.000000000000 0.666666666667 0.000000000000
0.666666666667 0.000000000000 0.666666666667

View File

@ -74,6 +74,7 @@ indabs=`grep " (cm-1)" $fname | awk '{print $1; print $2; print $3; print $4}'`
mobnewx=`sed -n -e "/ Temp / {n;n;n;n;p}" $fname | awk '{print $1; print $2; print $5}'`
mobnewy=`sed -n -e "/ Temp / {n;n;n;n;n;p}" $fname | awk '{print $2}'`
mobnewz=`sed -n -e "/ Temp / {n;n;n;n;n;n;p}" $fname | awk '{print $3}'`
ratmax=`grep "Maximum Im/Re Ratio =" $fname | awk '{print $9}'`
if test "$efm" != ""; then
echo efm
@ -297,4 +298,7 @@ if test "$pi" != ""; then
for x in $pi; do echo $x; done
fi
if test "$ratmax" != ""; then
echo ratmax
for x in $ratmax; do echo $x; done
fi

View File

@ -80,7 +80,7 @@ inputs_args = ('al.scf.in', '1'), ('al.ph.in', '2'), ('al.dvscfq2r.in', '6'), ('
[epw_base/]
program = EPW
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('scf_epw.in', '1'), ('nscf_epw.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3'), ('epw4.in', '3'), ('epw5.in', '3'), ('epw6.in', '3'), ('epw7.in', '3'), ('epw8.in', '3'), ('epw9.in', '3'), ('epw10.in', '3')
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('scf_epw.in', '1'), ('nscf_epw.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3'), ('epw4.in', '3'), ('epw5.in', '3'), ('epw6.in', '3'), ('epw7.in', '3'), ('epw8.in', '3'), ('epw9.in', '3'), ('epw10.in', '3'), ('epw11.in', '3')
[epw_trev/]
program = EPW

View File

@ -113,7 +113,8 @@ tolerance = ( (1.0e-6, 5.0e-3, 'e1'),
(3.0e+1, 1.0e-1, 'mobnewz'),
(1.0e+10,1.0e+2, 'density'),
(1.0 , 1.0e-2, 'mobxZ'),
(1.5e+3, None, 'indabs'))
(1.5e+3, None, 'indabs'),
(1.0e-4, None, 'ratmax'))
skip_program = grep
skip_args = 'not present in this version'