mirror of https://gitlab.com/QEF/q-e.git
Automatic documentation of EPW using FORD.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12453 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
471201791c
commit
cf956c000b
|
@ -0,0 +1,35 @@
|
|||
title: EPW overview
|
||||
author: Samuel Poncé
|
||||
date: 01-06-2016
|
||||
|
||||
|
||||
<div style="text-align:center"><img src ="http://epw.org.uk/figures/logo_v7.png" width="600"></div>
|
||||
|
||||
|
||||
EPW is an open-source F90/MPI code which calculates properties related to the electron-phonon interaction
|
||||
using [Density-Functional Perturbation Theory](http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.73.515)
|
||||
and [Maximally Localized Wannier Functions](http://journals.aps.org/prb/abstract/10.1103/PhysRevB.56.12847).
|
||||
|
||||
EPW is licensed under a [[GNU General Public License]](http://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||
|
||||
EPW is part of the [[Quantum Espresso]](http://www.quantum-espresso.org/) software package.
|
||||
|
||||
## Installation
|
||||
|
||||
The EPW software is only tested and intened to run on Linux (Mac OS might work but not tested).
|
||||
|
||||
* Download the latest version of [[Quantum-ESPRESSO]](http://www.qe-forge.org/gf/project/q-e/frs/?action=FrsReleaseBrowse&frs_package_id=18).
|
||||
|
||||
* Unpack and configure Quantum-ESPRESSO
|
||||
```bash
|
||||
tar -xvf espresso-5.4.0.tar.gz && cd espresso-5.4.0 && ./configure
|
||||
```
|
||||
|
||||
* Compile EPW (this will also compile pwscf, phonon, and wannier90)
|
||||
```bash
|
||||
make -j 4 pwall
|
||||
make -j 4 ph
|
||||
make -j 4 epw
|
||||
```
|
||||
|
||||
* The executable will be available in espresso-5.4.0/bin/epw.x or espresso-5.4.0/EPW/bin/epw.x
|
|
@ -0,0 +1,57 @@
|
|||
title: EPW
|
||||
project_dir: ./src
|
||||
output_dir: ./doc
|
||||
project_website: http://epw.org.uk/
|
||||
summary: EPW is the short name for "Electron-phonon Wannier". EPW is an open-source F90/MPI code which calculates properties related to the electron-phonon interaction using Density-Functional Perturbation Theory and Maximally Localized Wannier Functions.
|
||||
authors: Samuel Poncé
|
||||
Roxana Margine
|
||||
Carla Verdi
|
||||
Feliciano Giustino
|
||||
author_description: The EPW project is mainly developed at the university of Oxford.
|
||||
github: https://github.com/sponce24
|
||||
email: samuel.pon@gmail.com
|
||||
project_sourceforge: http://qeforge.qe-forge.org/gf/project/q-e/
|
||||
predocmark: >
|
||||
media_dir: ./media
|
||||
page_dir: ./Ford
|
||||
docmark_alt: #
|
||||
predocmark_alt: <
|
||||
display: public
|
||||
private
|
||||
source: false
|
||||
graph: true
|
||||
macro: TEST
|
||||
LOGIC=.true.
|
||||
extra_mods: json_module: http://jacobwilliams.github.io/json-fortran/
|
||||
futility: http://cmacmackin.github.io
|
||||
license: GNU
|
||||
extra_filetypes: sh #
|
||||
|
||||
EPW is the short name for "Electron-phonon Wannier". EPW is an open-source F90/MPI
|
||||
code which calculates properties related to the electron-phonon interaction
|
||||
using [Density-Functional Perturbation Theory](http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.73.515)
|
||||
and [Maximally Localized Wannier Functions](http://journals.aps.org/prb/abstract/10.1103/PhysRevB.56.12847).
|
||||
EPW is developed and maintained by [Samuel Poncé](http://giustino.materials.ox.ac.uk/index.php/Site/SamuelPonc%e9), [Roxana Margine](http://www.binghamton.edu/physics/people/margine.html), [Carla Verdi](http://giustino.materials.ox.ac.uk/index.php/Site/CarlaVerdi), and [Feliciano Giustino](http://giustino.materials.ox.ac.uk/).
|
||||
|
||||
The reference technical manuscript for the latest pubic release is:
|
||||
[EPW: Electron-phonon coupling, transport and superconducting properties using maximally localized Wannier functions](http://arxiv.org/abs/1604.03525)
|
||||
by S. Poncé, E. R. Margine, C. Verdi, and F. Giustino.
|
||||
|
||||
|
||||
@Note
|
||||
Since 26 April 2016 EPW is distributed as part of the [Quantum ESPRESSO](http://www.quantum-espresso.org/) suite.
|
||||
|
||||
The code was written by Feliciano Giustino (EPW v1) and Jesse Noffsinger (EPW v2) while
|
||||
at the University of California, Berkeley. Brad Malone (Harvard) and Cheol-Hwan Park
|
||||
(Seoul National University) contributed with tests and benchmarks.
|
||||
Roxana Margine implemented the anisotropic Eliashberg theory while at the University of Oxford (EPW v3).
|
||||
Samuel Poncé (Oxford) made the code compatible with the latest version of Quantum Espresso v5
|
||||
in the latest release EPW v4. Carla Verdi (Oxford) developed the electron-phonon interpolation
|
||||
for polar materials including Froehlich correction (released within EPW v4).
|
||||
|
||||
EPW is based on the method introduced in F. Giustino et al, [Phys. Rev. B 76, 165108 (2007)](http://journals.aps.org/prb/abstract/10.1103/PhysRevB.76.165108).
|
||||
An extended description of the first public release has been published in
|
||||
J. Noffsinger et al, [Comput. Phys. Comm. 181, 2140 (2010)](http://www.sciencedirect.com/science/article/pii/S0010465510003218). The extension of EPW to include the
|
||||
anisotropic Midgal-Eliashberg theory is based on the method described in
|
||||
E. R. Margine et al, [Phys. Rev. B 87, 024505 (2013)](http://journals.aps.org/prb/abstract/10.1103/PhysRevB.87.024505).
|
||||
The latest release of the code is described in S. Poncé et al, [arXiv:1604.03525](http://arxiv.org/abs/1604.03525).
|
|
@ -9,14 +9,14 @@
|
|||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE elphon_shuffle_wrap
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
! Electron-phonon calculation with Wannier functions: load all phonon q's
|
||||
!
|
||||
! 09/2009 This subroutine is the main driver of the electron-phonon
|
||||
! calculation. It first calculates the electron-phonon matrix elements
|
||||
! on the coarse mesh and then passes the data off to ephwann_shuffle
|
||||
! to perform the interpolation.
|
||||
!
|
||||
!!
|
||||
!! Electron-phonon calculation with Wannier functions: load all phonon q's
|
||||
!!
|
||||
!! This subroutine is the main driver of the electron-phonon
|
||||
!! calculation. It first calculates the electron-phonon matrix elements
|
||||
!! on the coarse mesh and then passes the data off to [[ephwann_shuffle]]
|
||||
!! to perform the interpolation.
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
#ifdef __PARA
|
||||
|
@ -64,49 +64,130 @@
|
|||
#ifdef __NAG
|
||||
USE f90_unix_io, ONLY : flush
|
||||
#endif
|
||||
! --------------------------------------------------------------
|
||||
implicit none
|
||||
|
||||
!
|
||||
integer :: sym_smallq(48)
|
||||
!
|
||||
real(kind=DP), allocatable :: xqc_irr(:,:), wqlist_irr(:), xqc(:,:), wqlist(:)
|
||||
! the qpoints in the irr wedge
|
||||
! the corresponding weigths
|
||||
! the qpoints in the uniform mesh
|
||||
! the corresponding weigths
|
||||
integer :: nqc_irr, nqc, max, nqxq_tmp, ibnd, ik, ios, &
|
||||
dummy1, dummy2, ik_start, ik_stop
|
||||
! number of qpoints in the irreducible wedge
|
||||
! number of qpoints on the uniform grid
|
||||
!
|
||||
! symmetry-related variables
|
||||
!
|
||||
integer :: gmapsym(ngm,48)
|
||||
! correspondence G -> S(G)
|
||||
complex(kind=DP) :: eigv (ngm, 48)
|
||||
! e^{ iGv} for 1...nsym (v the fractional translation)
|
||||
complex(kind=DP) :: cz1( nmodes, nmodes), cz2(nmodes, nmodes)
|
||||
! the eigenvectors for the first q in the star
|
||||
! the rotated eigenvectors, for the current q in the star
|
||||
!
|
||||
integer :: nq, isq (48), imq
|
||||
! degeneracy of the star of q
|
||||
! index of q in the star of a given sym.op.
|
||||
! index of -q in the star of q (0 if not present)
|
||||
integer :: sym_sgq(48)
|
||||
! the symmetries giving the q point iq in the star
|
||||
real(kind=DP) :: sxq (3, 48), et_tmp(nbnd, nkstot)
|
||||
! list of vectors in the star of q
|
||||
integer :: i, j, iq, iq_irr, isym, &
|
||||
iq_first, jsym, ism1, nsq, ipol, jpol, ierr, iunpun
|
||||
real(kind=DP) xq0(3), aq(3), saq(3), raq(3), ft1, ft2, ft3
|
||||
! REAL(DP) :: w2(3*nat) ! dummy here
|
||||
logical :: sym(48), eqvect_strict, nog, symmo, exst
|
||||
character (len=256) :: tempfile, dirname,filename
|
||||
character (len=256) :: tempfile
|
||||
!! Temporary .eig file
|
||||
character (len=256) :: dirname
|
||||
!! Name of the directory
|
||||
character (len=256) :: filename
|
||||
!! Name of the file
|
||||
#ifdef __PARA
|
||||
character (len=3) :: filelab
|
||||
!! Append the number of the core that works on that file
|
||||
#endif
|
||||
CHARACTER(LEN=6), EXTERNAL :: int_to_char
|
||||
character(len=6), external :: int_to_char
|
||||
!! Transfor an int to a character
|
||||
logical :: sym(48)
|
||||
!! Logical vectors that says which crystal symmetries exists in our system
|
||||
logical :: eqvect_strict
|
||||
!! This function test if two tridimensional vectors are equal
|
||||
logical :: nog
|
||||
!! Tell you if G=0 or not in $S(q0)+G=q$
|
||||
logical :: symmo
|
||||
!! Check whether the symmetry belongs to a symmorphic group
|
||||
logical :: exst
|
||||
!! Tells if a file exists.
|
||||
!
|
||||
integer :: sym_smallq(48)
|
||||
!! Set of all symmetries for the small group of one q.
|
||||
!! This is a subset of total crystal symmetries that remains
|
||||
!! after the q-point pertubation.
|
||||
integer :: nqc_irr
|
||||
!! Number of qpoints in the irreducible wedge
|
||||
integer :: nqc
|
||||
!! Number of qpoints on the uniform grid
|
||||
integer :: maxvalue
|
||||
!! Temporary integer for max value
|
||||
integer :: nqxq_tmp
|
||||
!! Maximum G+q length ?
|
||||
integer :: ibnd
|
||||
!! Band index
|
||||
integer :: ik
|
||||
!! Total k-point index
|
||||
integer :: ios
|
||||
!! Contains the state of the opened file
|
||||
integer :: dummy1
|
||||
!! Dummy variable
|
||||
integer :: dummy2
|
||||
!! Dummy variable
|
||||
integer :: ik_start
|
||||
!! Lower bound for the k-point of the coarse grid in parallel
|
||||
integer :: ik_stop
|
||||
!! Higher bound for the k-point of the coarse grid in parallel
|
||||
integer :: gmapsym(ngm,48)
|
||||
!! Correspondence G -> S(G)
|
||||
integer :: nq
|
||||
!! Degeneracy of the star of q
|
||||
integer :: isq (48)
|
||||
!! Index of q in the star of a given sym.op.
|
||||
integer :: imq
|
||||
!! Index of -q in the star of q (0 if not present)
|
||||
integer :: sym_sgq(48)
|
||||
!! The symmetries giving the q point iq in the star
|
||||
integer :: i
|
||||
!! Index for the star of q points
|
||||
integer :: j
|
||||
!! Cartesian inddex
|
||||
integer :: iq
|
||||
!! Q-index
|
||||
integer :: iq_irr
|
||||
!! Irreducible q-index
|
||||
integer :: isym
|
||||
!! Index of symmetry
|
||||
integer :: iq_first
|
||||
!! First q in the star of q
|
||||
integer :: jsym
|
||||
!! Symmetry index
|
||||
integer :: ism1
|
||||
!! Inverse of the symmetry
|
||||
integer :: nsq
|
||||
!! The number of degeneracy of the small group for this iq in the star
|
||||
integer :: ipol
|
||||
!! Polarization index
|
||||
integer :: jpol
|
||||
!! Polarization index
|
||||
integer :: ierr
|
||||
!! Error index when reading/writing a file
|
||||
integer :: iunpun
|
||||
!! Unit of the file
|
||||
!
|
||||
real(kind=DP), allocatable :: xqc_irr(:,:)
|
||||
!! The qpoints in the irr wedge
|
||||
real(kind=DP), allocatable :: wqlist_irr(:)
|
||||
!! The corresponding weigths
|
||||
real(kind=DP), allocatable :: xqc(:,:)
|
||||
!! The qpoints in the uniform mesh
|
||||
real(kind=DP), allocatable :: wqlist(:)
|
||||
!! The corresponding weigths
|
||||
real(kind=DP) :: sxq (3, 48)
|
||||
!! List of vectors in the star of q
|
||||
real(kind=DP) :: et_tmp(nbnd, nkstot)
|
||||
!! Temporary array containing the eigenvalues (KS or GW) when read from files
|
||||
real(kind=DP) :: xq0(3)
|
||||
!! Current coarse q-point
|
||||
real(kind=DP) :: aq(3)
|
||||
!! Store the current q-point for symmetry multiplication
|
||||
real(kind=DP) :: saq(3)
|
||||
!! Rotated q-point
|
||||
real(kind=DP) :: raq(3)
|
||||
!! Rotate q-point in cartesian coordinate
|
||||
real(kind=DP) :: ft1
|
||||
!! Fractional translation x
|
||||
real(kind=DP) :: ft2
|
||||
!! Fractional translation y
|
||||
real(kind=DP) :: ft3
|
||||
!! Fractional translation z
|
||||
!
|
||||
complex(kind=DP) :: eigv (ngm, 48)
|
||||
!! $e^{ iGv}$ for 1...nsym (v the fractional translation)
|
||||
complex(kind=DP) :: cz1( nmodes, nmodes)
|
||||
!! The eigenvectors for the first q in the star
|
||||
complex(kind=DP) :: cz2(nmodes, nmodes)
|
||||
!! The rotated eigenvectors, for the current q in the star
|
||||
!
|
||||
! ---------------------------------------------------------------------
|
||||
!
|
||||
CALL start_clock ( 'elphon_wrap' )
|
||||
!
|
||||
|
@ -139,16 +220,16 @@
|
|||
#endif
|
||||
!
|
||||
! fix for uspp
|
||||
max = nqxq
|
||||
maxvalue = nqxq
|
||||
DO iq = 1, nqc_irr
|
||||
nqxq_tmp = INT( ( (sqrt(gcutm) + sqrt(xqc_irr(1,iq)**2 + &
|
||||
xqc_irr(2,iq)**2 + xqc_irr(3,iq)**2) ) &
|
||||
/ dq + 4) * cell_factor )
|
||||
IF (nqxq_tmp .gt. max) max = nqxq_tmp
|
||||
IF (nqxq_tmp .gt. maxvalue) maxvalue = nqxq_tmp
|
||||
ENDDO
|
||||
IF (max .gt. nqxq) then
|
||||
IF (maxvalue .gt. nqxq) then
|
||||
IF (allocated(qrad)) deallocate(qrad)
|
||||
allocate (qrad (max, nbetam*(nbetam+1)/2,lmaxq, nsp))
|
||||
allocate (qrad (maxvalue, nbetam*(nbetam+1)/2,lmaxq, nsp))
|
||||
ENDIF
|
||||
IF (nkstot .ne. nk1*nk2*nk3 ) &
|
||||
CALL errore('elphon_shuffle_wrap','nscf run inconsistent with epw input',1)
|
||||
|
|
|
@ -9,17 +9,17 @@
|
|||
! Adapted from PH/ph.f90
|
||||
!-----------------------------------------------------------------------
|
||||
PROGRAM epw
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
! This is the main EPW driver which sets the phases on the wavefunctions,
|
||||
! calls wannierize and elphon_shuffle_wrap
|
||||
!
|
||||
! 8/13/08 removed epsil variables, fildyn, ldisp
|
||||
!
|
||||
! 8/14/08 lnscf is unnecessary, as is nqs,iq_start
|
||||
! 8/15/08 recover has been cut
|
||||
! 02/2009 in state of v0.2 Barely resembles phonon.f90
|
||||
!
|
||||
!! author: Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
!! version: v4.0
|
||||
!! license: GNU
|
||||
!! summary: EPW main driver
|
||||
!!
|
||||
!! This is the main EPW driver which sets the phases on the wavefunctions,
|
||||
!! calls [[wann_run]] and [[elphon_shuffle_wrap]]
|
||||
!!
|
||||
!! @Note
|
||||
!! 8/14/08 lnscf is unnecessary, as is nqs,iq_start
|
||||
!!
|
||||
USE io_global, ONLY : stdout
|
||||
#ifdef __PARA
|
||||
USE mp, ONLY : mp_bcast, mp_barrier
|
||||
|
@ -31,14 +31,15 @@
|
|||
USE global_version, ONLY : version_number
|
||||
USE epwcom, ONLY : filukk, eliashberg, ep_coupling
|
||||
USE environment, ONLY : environment_start
|
||||
! SP: Move elph from control_ph to el_phon
|
||||
USE elph2, ONLY : elph
|
||||
USE elph2, ONLY : elph
|
||||
! Flag to perform an electron-phonon calculation. If .true.
|
||||
! the code will enter in [[elphon_shuffle_wrap]]
|
||||
!
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
CHARACTER (LEN=12) :: code = 'EPW'
|
||||
INTEGER :: ierr
|
||||
!! Name of the program
|
||||
!
|
||||
version_number = '4.0.0'
|
||||
!
|
||||
|
@ -94,7 +95,7 @@ write(stdout,'(a)') "
|
|||
IF ( ep_coupling ) &
|
||||
WRITE( stdout, '(/5x,"Ultrasoft (Vanderbilt) Pseudopotentials")' )
|
||||
!
|
||||
! read in the input file
|
||||
! Read in the input file
|
||||
!
|
||||
CALL epw_readin
|
||||
!
|
||||
|
@ -120,9 +121,10 @@ write(stdout,'(a)') "
|
|||
!
|
||||
CALL setphases_wrap
|
||||
!
|
||||
! Create U(k, k') localization matrix
|
||||
!
|
||||
IF (wannierize) THEN
|
||||
!
|
||||
! Create U(k, k') localization matrix
|
||||
!
|
||||
CALL wann_run
|
||||
ELSE
|
||||
!
|
||||
|
|
Loading…
Reference in New Issue