...
 
Commits (265)
......@@ -148,8 +148,7 @@ MODULE cp_restart_new
CHARACTER(LEN=20) :: dft_name
CHARACTER(LEN=256) :: dirname
CHARACTER(LEN=320) :: filename, sourcefile
CHARACTER(LEN=4) :: cspin
INTEGER :: kunit, ik_eff
INTEGER :: ik_eff
INTEGER :: k1, k2, k3
INTEGER :: nk1, nk2, nk3
INTEGER :: j, i, iss, ig, nspin_wfc, iss_wfc
......@@ -646,11 +645,8 @@ MODULE cp_restart_new
COMPLEX(DP), INTENT(INOUT) :: cm2(:,:) !
REAL(DP), INTENT(INOUT) :: wfc(:,:) ! BS
!
CHARACTER(LEN=256) :: dirname, kdirname, filename
CHARACTER(LEN=5) :: kindex
CHARACTER(LEN=4) :: cspin
CHARACTER(LEN=256) :: dirname, filename
INTEGER :: strlen
INTEGER :: kunit
INTEGER :: k1, k2, k3
INTEGER :: nk1, nk2, nk3
INTEGER :: i, j, iss, ig, nspin_wfc, ierr, ik
......
......@@ -702,13 +702,17 @@ makov_payne.o : ../../UtilXlib/mp.o
makov_payne.o : ../../UtilXlib/parallel_include.o
makov_payne.o : ions_positions.o
makov_payne.o : mainvar.o
manycp.o : ../../LAXlib/mp_diag.o
manycp.o : ../../Modules/check_stop.o
manycp.o : ../../Modules/command_line_options.o
manycp.o : ../../Modules/environment.o
manycp.o : ../../Modules/input_parameters.o
manycp.o : ../../Modules/io_global.o
manycp.o : ../../Modules/mp_bands.o
manycp.o : ../../Modules/mp_global.o
manycp.o : ../../Modules/mp_images.o
manycp.o : ../../Modules/mp_pools.o
manycp.o : ../../Modules/mp_world.o
manycp.o : ../../Modules/read_input.o
manycp.o : input.o
metaxc.o : ../../Modules/funct.o
......
......@@ -50,6 +50,7 @@ calculation to define paths in the BZ. This feature is available with
the option \texttt{tpiba\_b} or \texttt{crystal\_b} in a \texttt{'bands'}
calculation or with the option \texttt{q\_in\_band\_form} in the input of the
\texttt{matdyn.x} code.
BEWARE: you need to explicitly specify \texttt{ibrav} to use this feature.
Lines in reciprocal space are defined by giving the coordinates of the
starting and ending points and the number of points of each line.
The coordinates of the starting and ending points can be
......
\documentclass[12pt,a4paper]{article}
<<<<<<< HEAD
\def\version{6.4}
=======
\def\version{6.4.1}
>>>>>>> 0efe83d29ae4c5f0bd004403548617d997955670
\def\QE{{\sc Quantum ESPRESSO}}
\def\qe{QE}
\textwidth = 17cm
......@@ -1194,8 +1198,9 @@ may save hours of searching into the code for a piece of missing information.
complain if the latter \& is missing, others do.
% Another example: empty strings are nonstandard,
% use \texttt{empty='~'}, not \texttt{empty=''}.
\item do not (yet) use F2008 syntax. Stick to F2003 at most (for now).
\qe\ must work even if you do not have the latest and the greatest compiler.
\item try to stick to F2003 standard: \qe\ must work even if you do not have
the latest and the greatest compiler. Use F2008 syntax only if really
useful, and after verifying that it doesn't break too many compilers.
\item use "dp" (defined in module ''kinds'') to define the type of real and
complex variables
\item all constants should be defined to be of kind "dp". Preferred syntax:
......@@ -1210,7 +1215,7 @@ double precision complex number).
\item Do not use automatic arrays (e.g. \texttt{REAL(dp) :: A(N)} with
\texttt{N} defined at run time) unless you are sure that the array is
small in all cases: large arrays may easily exceed the stack size,
or the memory size,
or the memory size.
\item Do not use pointers unless you have a good reason to:
pointers may hinder optimization. Allocatable arrays should be used instead.
\item If you use pointers, nullify them before performing tests on their
......@@ -1224,9 +1229,12 @@ array sections. Passing an array section to a routine may look elegant
but it may turn out to be inefficient: a copy will be silently done
if the section is not contiguous in memory (or if the compiler
decides it is the right thing to do), increasing the memory footprint.
\item Do not pass unallocated arrays as arguments, even in those cases where
they are not actually used inside the subroutine: some compilers don't
like it.
\item Do not pass unallocated arrays or pointers as non-optional arguments,
even in those cases where they are not actually used inside the subroutine:
some compilers don't like it. Also note that if passed as optional argument
--provided the argument has not the pointer or allocatable attribute--
unallocated arrays or pointers are interpreted as non present (this is a
F2008 feature, already used since v.6.4).
\item Do not use any construct that is susceptible to be flagged as
out-of-bounds error, even if no actual out-of-bound error takes place.
\item Always use IMPLICIT NONE and declare all local variables.
......
<<<<<<< HEAD
=======
New in 6.4.1 branch :
* A warning is issued if the lattice parameter seems to be a conversion
factor instead of a true lattice parameter. Conversion should be achieved
with the appropriate options, not with dirty tricks. In the future this
will no longer be allowed
* A warning is issued if ibrav=0 is used for systems having symmetry. If not
properly done this may lead to strange problems with symmetry detection
and symmetrization. Lattice information should be used if available.
Problems fixed in 6.4.1 branch :
* Two bugs fixed in HP: 1) the code was not working correctly when fractional
translations were present, 2) there was a bug in the case when either there
is only one k point, or when k pools are used and some of the pools have
only one k point.
* Restart of ph.x with 2D boundary conditions has been fixed (see gitlab
issue #102)
* XML file correctly written if tetrahedra are used (see gitlab issue #103)
>>>>>>> 0efe83d29ae4c5f0bd004403548617d997955670
New in version 6.4:
* Experimental version of SCDM localization with k-points, activated like for
k=0 by specifying in &system namelist a value > 0 for "localization_thr".
......@@ -17,6 +38,11 @@ New in version 6.4:
* XDM now works also for USPP and norm-conserving PP
Problems fixed in version 6.4 (+ = in qe-6.3-backports as well) :
<<<<<<< HEAD
=======
+ Codes reading scf data recomputed celldm parameters also if ibrav=0
This produced confusing output and had the potential to break some codes
>>>>>>> 0efe83d29ae4c5f0bd004403548617d997955670
+ index not correctly initialized in LSDA phonon with core corrections
+ GTH pseudopotentials in analytical form wrongly computed in some cases
+ projwfc.x not working with new xml format in noncolinear/spinorbit case
......@@ -55,6 +81,8 @@ Incompatible changes in version 6.4 version:
Known problems in version 6.4:
* Frequent "dexx is negative" errors with hybrid functionals
* restart of ph.x when using 2D boundary conditions fails see issue#102 on gitLab
* the band_structure element is printed incompletely if tetrahedra are used for sums in the IBZ, see issue #103.
New in 6.3 version:
* New implementation, using a more robust algorithm for the Wigner-Seitz
......
\documentclass[12pt,a4paper]{article}
<<<<<<< HEAD
\def\version{6.4}
=======
\def\version{6.4.1}
>>>>>>> 0efe83d29ae4c5f0bd004403548617d997955670
\def\qe{{\sc Quantum ESPRESSO}}
\usepackage{html}
......@@ -407,7 +411,9 @@ may break them. Use \texttt{export LC\_ALL=C} (sh/bash) or
when running scripts (including installation scripts).
Second, you need C and Fortran compilers, compliant with C89 and
F2003 standards. For parallel
F2003 standards\footnote{since v.6.4 a standard 2008 feature is
used: if unallocated pointers are passed as optional arguments,
they are interpreted as not present}. For parallel
execution, you will also need MPI libraries and a parallel
(i.e. MPI-aware) compiler. For massively parallel machines, or
for simple multicore parallelization, an OpenMP-aware compiler
......
This diff is collapsed.
......@@ -4,191 +4,11 @@
# 14/07/2015 - Creation of the script - Samuel Ponce
# 14/03/2018 - Automatically reads the number of q-points - Michael Waters
# 14/03/2018 - Detect if SOC is included in the calculation - Samuel Ponce
# 13/11/2018 - Write dyn files in xml format for SOC case - Shunhong Zhang (USTC)
#
import numpy as np
import os
from xml.dom import minidom
# Convert the dyn files to the xml form, for SOC case - Shunhong Zhang (USTC)
def dyn2xml(prefix):
ndyn=int(os.popen('head -2 {0}.dyn0|tail -1'.format(prefix)).read())
for idyn in range(1,ndyn+1):
print '{0}.dyn{1} to {0}.dyn_q{1}.xml'.format(prefix,idyn)
dynmat=dyn(prefix,idyn)
dynmat._write_xml()
def get_geom_info():
if os.path.isfile('ph.out')==False:
print 'cannot extract geometry info from ph.out'
return 1
else:
volm=float(os.popen('grep -a volume ph.out 2>/dev/null|tail -1').readline().split()[-2])
get_at=os.popen('grep -a -A 3 "crystal axes" ph.out 2>/dev/null|tail -3').readlines()
at=np.array([[float(item) for item in line.split()[3:6]] for line in get_at])
get_bg=os.popen('grep -a -A 3 "reciprocal axes" ph.out 2>/dev/null|tail -3').readlines()
bg=np.array([[float(item) for item in line.split()[3:6]] for line in get_bg])
return volm,at,bg
class dyn(object):
def __init__(self,prefix,idyn):
self._prefix=prefix
self._idyn=idyn
fil='{0}.dyn{1}'.format(prefix,idyn)
f=open(fil)
self._comment=f.readline()
f.readline()
line=f.readline().split()
self._ntype=int(line[0])
self._natom=int(line[1])
self._ibrav=int(line[2])
self._nspin=1
self._cell_dim=np.array([float(ii) for ii in line[3:]])
self._volm=0
self._at=np.zeros((3,3),float)
self._bg=np.zeros((3,3),float)
try: self._volm,self._at,self._bg = get_geom_info()
except: print 'warning: lattice info not found'
self._species=[];
self._mass=[]
for i in range(self._ntype):
line=f.readline().split()
self._species.append(line[1].strip("'"))
self._mass.append(float(line[-1])/911.4442) # normalize to atomic mass
self._atom_type=np.zeros(self._natom,int)
self._pos=np.zeros((self._natom,3),float)
for i in range(self._natom):
line=f.readline().split()
self._atom_type[i]=int(line[1])
for j in range(3): self._pos[i,j]=float(line[j+2])
self._nqpt=int(os.popen('grep -c "Dynamical Matrix" {0}'.format(fil)).read().split()[0])
self._qpt=[]
self._dynmat=np.zeros((self._nqpt,self._natom,self._natom,3,3,2),float)
f.readline()
for iqpt in range(self._nqpt):
f.readline();
f.readline()
line=f.readline().split()
self._qpt.append(np.array([float(item) for item in line[3:6]]))
f.readline()
for i in range(self._natom):
for j in range(self._natom):
f.readline()
data=np.fromfile(f,sep=' ',count=18,dtype=float).reshape(3,3,2)
self._dynmat[iqpt,i,j]=data
self._qpt=np.array(self._qpt)
for i in range(5): f.readline()
self._freq=np.zeros((self._natom*3,2),float)
self._disp=np.zeros((self._natom*3,self._natom,3,2),float)
for i in range(self._natom*3):
line=f.readline().split()
self._freq[i,0]=float(line[4])
self._freq[i,1]=float(line[7])
for j in range(self._natom):
line=f.readline().split()[1:-1]
data=np.array([float(item) for item in line]).reshape(3,2)
self._disp[i,j]=data
def _write_xml(self):
doc=minidom.Document()
root = doc.createElement('Root')
doc.appendChild(root)
geom_info=doc.createElement('GEOMETRY_INFO')
tags=('NUMBER_OF_TYPES','NUMBER_OF_ATOMS','BRAVAIS_LATTICE_INDEX','SPIN_COMPONENTS')
numbers=(self._ntype,self._natom,self._ibrav,self._nspin)
for i,(tag,num) in enumerate(zip(tags,numbers)):
inode=doc.createElement(tag)
inode.setAttribute('type','integer')
inode.setAttribute('size','1')
inode.text=num
inode.appendChild(doc.createTextNode(str(num)))
geom_info.appendChild(inode)
cell_dim=doc.createElement('CELL_DIMENSIONS')
cell_dim.setAttribute('type','real')
cell_dim.setAttribute('size','6')
for i in range(6):
cell_dim.appendChild(doc.createTextNode('{0:16.10f}'.format(self._cell_dim[i])))
geom_info.appendChild(cell_dim)
tags=['AT','BG']
for tag,lat in zip(tags,(self._at,self._bg)):
inode=doc.createElement(tag)
inode.setAttribute('type','real')
inode.setAttribute('size','9')
inode.setAttribute('columns','3')
for i in range(3):
text=' '.join(['{0:16.10f}'.format(item) for item in lat[i]])
inode.appendChild(doc.createTextNode(text))
geom_info.appendChild(inode)
volm=doc.createElement('UNIT_CELL_VOLUME_AU')
volm.setAttribute('type','real')
volm.setAttribute('size','1')
volm.appendChild(doc.createTextNode('{0:16.10f}'.format(self._volm)))
geom_info.appendChild(volm)
for itype in range(self._ntype):
nt=doc.createElement('TYPE_NAME.{0}'.format(itype+1))
nt.setAttribute('type','character')
nt.setAttribute('size','1')
nt.setAttribute('len','3')
nt.appendChild(doc.createTextNode('{0}'.format(self._species[itype])))
na=doc.createElement('MASS.{0}'.format(itype+1))
na.setAttribute('type','real')
na.setAttribute('size','1')
na.appendChild(doc.createTextNode('{0:16.10f}'.format(self._mass[itype])))
geom_info.appendChild(nt)
geom_info.appendChild(na)
for iat in range(self._natom):
at=doc.createElement('ATOM.{0}'.format(iat+1))
at.setAttribute('SPECIES','{0}'.format(self._species[self._atom_type[iat]-1]))
at.setAttribute('INDEX',str(iat+1))
pos=' '.join(['{0:16.10f}'.format(item) for item in self._pos[iat]])
at.setAttribute('TAU',pos)
geom_info.appendChild(at)
nqpt=doc.createElement('NUMBER_OF_Q')
nqpt.setAttribute('type','integer')
nqpt.setAttribute('size','1')
nqpt.appendChild(doc.createTextNode(str(self._nqpt)))
geom_info.appendChild(nqpt)
root.appendChild(geom_info)
for iqpt in range(self._nqpt):
dynmat=doc.createElement('DYNAMICAL_MAT_.{0}'.format(iqpt+1))
qpt=doc.createElement('Q_POINT')
qpt.setAttribute('type','real')
qpt.setAttribute('size','3')
qpt.setAttribute('columns','3')
tnode=doc.createTextNode(' '.join(['{0:16.10f}'.format(item) for item in self._qpt[iqpt]]))
qpt.appendChild(tnode)
dynmat.appendChild(qpt)
for iat in range(self._natom):
for jat in range(self._natom):
ph=doc.createElement('PHI.{0}.{1}'.format(iat+1,jat+1))
ph.setAttribute('type','complex')
ph.setAttribute('size','9')
ph.setAttribute('columns','3')
for i in range(3):
for j in range(3):
text='{0:16.10f} {1:16.10f}'.format(self._dynmat[iqpt,iat,jat,i,j,0],self._dynmat[iqpt,iat,jat,i,j,1])
ph.appendChild(doc.createTextNode(text))
dynmat.appendChild(ph)
root.appendChild(dynmat)
mode=doc.createElement('FREQUENCIES_THZ_CMM1')
for iomega in range(self._natom*3):
inode=doc.createElement('OMEGA.{0}'.format(iomega+1))
inode.setAttribute('type','real')
inode.setAttribute('size','2')
inode.setAttribute('columns','2')
inode.appendChild(doc.createTextNode('{0:16.10f} {1:16.10f}'.format(self._freq[iomega,0],self._freq[iomega,1])))
idisp=doc.createElement('DISPLACEMENT.{0}'.format(iomega+1))
idisp.setAttribute('tpye','complex')
idisp.setAttribute('size','3')
for iat in range(self._natom):
for j in range(3):
tnode=doc.createTextNode('{0:16.10f} {1:16.10f}'.format(self._disp[iomega,iat,j,0],self._disp[iomega,iat,j,1]))
idisp.appendChild(tnode)
mode.appendChild(inode)
mode.appendChild(idisp)
root.appendChild(mode)
fp = open('{0}.dyn_q{1}.xml'.format(self._prefix,self._idyn), 'w')
doc.writexml(fp, addindent=' ', newl='\n')
# Return the number of q-points in the IBZ
def get_nqpt(prefix):
fname = '_ph0/' +prefix+'.phsave/control_ph.xml'
......@@ -233,21 +53,6 @@ prefix = str(user_input)
# Test if SOC
SOC = hasSOC(prefix)
# If SOC detected, but dyn is not in XML and we want to convert it
if SOC=='true':
user_input = raw_input('Calculation with SOC detected. Do you want to convert dyn in XML format [y/n]?\n')
if str(user_input) == 'y':
dyn2xml(prefix)
os.system('mv {0}.dyn*.xml save'.format(prefix))
# If no SOC detected, do you want to convert into XML format
if SOC=='false':
user_input = raw_input('Calculation without SOC detected. Do you want to convert to xml anyway [y/n]?\n')
if str(user_input) == 'y':
SOC = 'true'
dyn2xml(prefix)
os.system('mv {0}.dyn*.xml save'.format(prefix))
# Test if seq. or parallel run
SEQ = isSEQ(prefix)
......
......@@ -10,7 +10,6 @@ authors: Samuel Poncé
author_description: The EPW project is mainly developed at the university of Oxford.
github: https://github.com/sponce24
email: [email protected]
project_sourceforge: http://qeforge.qe-forge.org/gf/project/q-e/
predocmark: >
media_dir: ./media
page_dir: ./Ford
......
......@@ -645,8 +645,6 @@
! every processor has just a chunk of the array, I may need some
! communication)
!
! No ultrasoft now
!
! I use the rule : if not found then gmap = 0
! Note that the map will be used only up to npwx (small sphere),
! while the G-vectors lost in the process are on the surface of
......
......@@ -65,8 +65,6 @@
zi_all(:,:), &!
esigmar_all(:,:,:), &!
esigmai_all(:,:,:), &!
gammar_all(:,:,:), &! Real part of the Phonon self-energy (freq. dependent for spectral function)
gammai_all(:,:,:), &! Imaginary part of the Phonon self-energy (freq. dependent for spectral function)
jdos(:), &!
spectra(:,:,:,:,:,:), &! dipole absorption spectra, polarizations, nomega, nsmear, dme/vme, absorption/emission
sumr(:,:,:,:), &! to apply the ASR correction to every xq
......
......@@ -18,9 +18,6 @@
!! Compact formalism Dec 2006
!! Phonon irreducible zone Mar 2007
!!
!! No ultrasoft now
!! No spin polarization
!!
!! RM - add noncolin case
!-----------------------------------------------------------------------
!
......@@ -1475,6 +1472,13 @@
!
ENDDO
CLOSE(lambda_phself)
!
! SP - 03/2019
! \Gamma = 1/\tau = phonon lifetime
! \Gamma = - 2 * Im \Pi^R where \Pi^R is the retarted phonon self-energy.
! Im \Pi^R = pi*k-point weight*[f(E_k+q) - f(E_k)]*delta[E_k+q - E_k - w_q]
! Since gamma_all = pi*k-point weight*[f(E_k) - f(E_k+q)]*delta[E_k+q - E_k - w_q] we have
! \Gamma = 2 * gamma_all
OPEN(unit=linewidth_phself,file='linewidth.phself')
WRITE(linewidth_phself, '(a)') '# Phonon frequency and phonon lifetime in meV '
WRITE(linewidth_phself,'(a)') '# Q-point Mode Phonon freq (meV) Phonon linewidth (meV)'
......@@ -1482,7 +1486,7 @@
!
DO imode=1, nmodes
WRITE(linewidth_phself,'(i9,i6,E20.8,E22.10)') iqq,imode,&
ryd2mev*wf(imode,iqq),ryd2mev*REAL(gamma_all(imode,iqq,1))
ryd2mev*wf(imode,iqq), 2.0d0 * ryd2mev * REAL(gamma_all(imode,iqq,1))
ENDDO
!
ENDDO
......
......@@ -20,9 +20,6 @@
!! Compact formalism Dec 2006
!! Phonon irreducible zone Mar 2007
!!
!! No ultrasoft now
!! No spin polarization
!!
!! RM - add noncolin case
!-----------------------------------------------------------------------
!
......
......@@ -20,8 +20,6 @@
!! every processor has just a chunk of the array, I may need some
!! communication)
!!
!! No ultrasoft now
!!
!----------------------------------------------------------------------
USE kinds, ONLY : DP
USE constants_epw, ONLY : twopi, ci, cone
......
......@@ -2074,8 +2074,8 @@
USE io_epw, ONLY : iufilgap
USE io_files, ONLY : prefix
USE epwcom, ONLY : fsthick
USE eliashbergcom, ONLY : estemp, Agap, nkfs, nbndfs, ef0, ekfs
USE constants_epw, ONLY : kelvin2eV, zero
USE eliashbergcom, ONLY : estemp, Agap, nkfs, nbndfs, ef0, ekfs, w0g
USE constants_epw, ONLY : kelvin2eV, zero, eps5
!
IMPLICIT NONE
!
......@@ -2099,8 +2099,6 @@
!! Step size in nbin
REAL(DP) :: delta_max
!! Max value of superconducting gap
REAL(DP) :: sigma
!! Variable for smearing
REAL(DP) :: weight
!! Variable for weight
REAL(DP), ALLOCATABLE :: delta_k_bin(:)
......@@ -2110,8 +2108,8 @@
!
temp = estemp(itemp) / kelvin2eV
!
delta_max = 1.25d0 * maxval(Agap(:,:,itemp))
nbin = int(delta_max/(0.005d0/1000.d0))
delta_max = 1.1d0 * maxval(Agap(:,:,itemp))
nbin = NINT(delta_max / eps5) + 1
dbin = delta_max / dble(nbin)
IF ( .not. ALLOCATED(delta_k_bin) ) ALLOCATE( delta_k_bin(nbin) )
delta_k_bin(:) = zero
......@@ -2119,11 +2117,9 @@
DO ik = 1, nkfs
DO ibnd = 1, nbndfs
IF ( abs( ekfs(ibnd,ik) - ef0 ) .lt. fsthick ) THEN
DO ibin = 1, nbin
sigma = 1.d0 * dbin
weight = w0gauss( ( Agap(ibnd,ik,itemp) - dble(ibin) * dbin) / sigma, 0 ) / sigma
delta_k_bin(ibin) = delta_k_bin(ibin) + weight
ENDDO
ibin = nint( Agap(ibnd,ik,itemp) / dbin ) + 1
weight = w0g(ibnd,ik)
delta_k_bin(ibin) = delta_k_bin(ibin) + weight
ENDIF
ENDDO
ENDDO
......
!
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
! Copyright (C) 2016-2018 Samuel Ponce'
! Copyright (C) 2016-2019 Samuel Ponce', Roxana Margine, Feliciano Giustino
!
! This file is distributed under the terms of the GNU General Public
! License. See the file `LICENSE' in the root directory of the
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
!
!
!-----------------------------------------------------------------------
SUBROUTINE print_ibte( iqq, iq, totq, ef0, efcb, first_cycle, ind_tot, ind_totcb, &
......
This diff is collapsed.
......@@ -329,13 +329,13 @@
wgkq = wgauss( -ekq*inv_eptemp0, -99)
!
! = k-point weight * [f(E_k) - f(E_k+q)]/ [E_k+q - E_k -w_q + id]
! This is the imaginary part of the phonon self-energy, sans
! This is the imaginary part of minus the phonon self-energy, sans
! the matrix elements
!
!weight = wkf (ikk) * (wgkk - wgkq) * &
! aimag ( cone / ( ekq - ekk - wq - ci * degaussw0 ) )
!
! SP: The expression below (phonon self-energy) corresponds to
! SP: The expression below (minus phonon self-energy) corresponds to
! = pi*k-point weight*[f(E_k) - f(E_k+q)]*delta[E_k+q - E_k - w_q]
weight = pi * wkf (ikk) * (wgkk - wgkq)* &
w0gauss ( (ekq - ekk - wq) / degaussw0, 0) / degaussw0
......
This diff is collapsed.
......@@ -1423,7 +1423,7 @@
degaussw, nkf1, nkf2, nkf3
USE eliashbergcom, ONLY : nkfs, nbndfs, g2, ixkqf, ixqfs, nqfs, w0g, ekfs, ef0, dosef, wsph, &
wkfs, dwsph, a2f_iso, ixkff
USE constants_epw, ONLY : ryd2ev
USE constants_epw, ONLY : ryd2ev, eps2, zero, eps16
USE io_global, ONLY : ionode_id
USE mp_global, ONLY : inter_pool_comm, my_pool_id, npool
USE mp_world, ONLY : mpime
......@@ -1599,23 +1599,25 @@
IF ( ALLOCATED(a2f) ) DEALLOCATE( a2f )
IF ( ALLOCATED(a2f_modeproj) ) DEALLOCATE( a2f_modeproj )
!
nbink = int( 1.25d0 * maxval(lambda_k(:,:)) / 0.005d0 )
dbink = 1.25d0 * maxval(lambda_k(:,:)) / dble(nbink)
nbink = NINT( 1.1d0 * MAXVAL(lambda_k(:,:)) / eps2 ) + 1
dbink = 1.1d0 * MAXVAL(lambda_k(:,:)) / DBLE(nbink)
!
IF ( .not. ALLOCATED(lambda_k_bin) ) ALLOCATE ( lambda_k_bin(nbink) )
lambda_k_bin(:) = 0.d0
lambda_k_bin(:) = zero
!
!SP : Should be initialized
nbin = 0
dbin = 0.0_DP
dbin = zero
!
IF ( iverbosity == 2 ) THEN
nbin = int( 1.25d0 * maxval(lambda_max(:)) / 0.005d0 )
dbin = 1.25d0 * maxval(lambda_max(:)) / dble(nbin)
IF ( .not. ALLOCATED(lambda_pairs) ) ALLOCATE ( lambda_pairs(nbin) )
lambda_pairs(:) = 0.d0
nbin = nint( 1.1d0 * MAXVAL(lambda_max(:)) / eps2 ) + 1
dbin = 1.1d0 * MAXVAL(lambda_max(:)) / dble(nbin)
IF ( .not. ALLOCATED(lambda_pairs) ) ALLOCATE ( lambda_pairs(nbin) )
lambda_pairs(:) = zero
ENDIF
!
WRITE(stdout,'(5x,a13,f21.7,a18,f21.7)') 'lambda_max = ', maxval(lambda_max(:)), ' lambda_k_max = ', maxval(lambda_k(:,:))
WRITE(stdout,'(5x,a13,f21.7,a18,f21.7)') 'lambda_max = ', maxval(lambda_max(:)), &
' lambda_k_max = ', maxval(lambda_k(:,:))
WRITE(stdout,'(a)') ' '
!
lambda_k(:,:) = 0.d0
......@@ -1631,20 +1633,16 @@
CALL lambdar_aniso_ver1( ik, iq, ibnd, jbnd, 0.d0, lambda_eph )
lambda_k(ik,ibnd) = lambda_k(ik,ibnd) + weight * lambda_eph
IF ( iverbosity == 2 ) THEN
DO ibin = 1, nbin
sigma = 1.d0 * dbin
weight = w0gauss( ( lambda_eph - dble(ibin) * dbin ) / sigma, 0 ) / sigma
lambda_pairs(ibin) = lambda_pairs(ibin) + weight
ENDDO
ibin = NINT( lambda_eph / dbin ) + 1
weight = w0g(ibnd,ik) * w0g(jbnd,ixkqf(ik,iq0))
lambda_pairs(ibin) = lambda_pairs(ibin) + weight
ENDIF
ENDIF
ENDDO ! jbnd
ENDDO ! iq
DO ibin = 1, nbink
sigma = 1.d0 * dbink
weight = w0gauss( ( lambda_k(ik,ibnd) - dble(ibin) * dbink ) / sigma, 0 ) / sigma
lambda_k_bin(ibin) = lambda_k_bin(ibin) + weight
ENDDO
ibin = NINT( lambda_k(ik,ibnd) / dbink ) + 1
weight = w0g(ibnd,ik)
lambda_k_bin(ibin) = lambda_k_bin(ibin) + weight
ENDIF
ENDDO ! ibnd
ENDDO ! ik
......@@ -1676,7 +1674,7 @@
OPEN(unit = iufillambda, file = TRIM(prefix)//".lambda_k_pairs", form = 'formatted')
WRITE(iufillambda,'(a12,a30)') '# lambda_nk',' \rho(lambda_nk) scaled to 1'
DO ibin = 1, nbink
WRITE(iufillambda,'(2f21.7)') dbink*dble(ibin), lambda_k_bin(ibin)/maxval(lambda_k_bin(:))
WRITE(iufillambda,'(2f21.7)') dbink*dble(ibin), lambda_k_bin(ibin)/MAXVAL(lambda_k_bin(:))
ENDDO
CLOSE(iufillambda)
!
......@@ -1761,9 +1759,4 @@
!
END SUBROUTINE evaluate_a2f_lambda
!
!
END MODULE superconductivity_aniso
!
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
! Copyright (C) 2016-2018 Samuel Ponce'
! Copyright (C) 2016-2019 Samuel Ponce', Roxana Margine, Feliciano Giustino
!
! This file is distributed under the terms of the GNU General Public
! License. See the file `LICENSE' in the root directory of the
......
......@@ -163,12 +163,17 @@
!! Used for the averaging
REAL(kind=DP) :: ekk2
!! Use for averaging
!
REAL(kind=DP) :: xkf_tmp (3, nkqtotf)
!! Temporary k-point coordinate (dummy variable)
REAL(kind=DP) :: wkf_tmp(nkqtotf)
!! Temporary k-weights (dummy variable)
REAL(kind=DP) :: dfnk
!! df/de
REAL(kind=DP) :: etemp
!! Temperature
REAL(KIND=DP), EXTERNAL :: w0gauss
!! The derivative of wgauss: an approximation to the delta function
! Gather all the k-point coordinate from all the pools
!
! Gather all the k-point coordinate from all the pools
xkf_all(:,:) = zero
......@@ -236,7 +241,6 @@
CALL kpmq_map( xkf_all(:, 2*ik-1 ), xqf (:, iq), +1, nkq_abs )
s_BZtoIBZ_full(:,:,ind) = s_BZtoIBZ(:,:,nkq_abs)
ixkqf_tr(ind) = BZtoIBZ(nkq_abs)
!print*,'ind iq ik ixkqf_tr ',ind, iq, ik, ixkqf_tr(ind), s_BZtoIBZ_full(1,1,ind)
ENDDO
!
ENDIF
......@@ -244,7 +248,6 @@
! First computes the SERTA solution as the first step of the IBTE
F_SERTA(:,:,:,:) = zero
tmp(:,:,:) = zero
!tmp2(:,:,:,:,:) = zero
!
DO ind=1, nind
iq = sparse_q( ind )
......@@ -254,15 +257,7 @@
itemp = sparse_t( ind )
!
tmp(ibnd, ik, itemp) = tmp(ibnd, ik, itemp) + trans_prob(ind)
!tmp2(jbnd, ibnd, itemp, ik, iq) = trans_prob(ind)
!IF (ik==2 .and. ibnd ==2 .and. itemp ==2) print*,'ind tmp ', ind, tmp(ibnd, ik, itemp)
!IF (ik==2) print*,ind, trans_prob(ind)
!print*,'ind iq ik ibnd jbnd itemp ',ind, iq, ik, ibnd, jbnd, itemp
!print*,'tmp ',tmp(ibnd, ik, itemp)
ENDDO
!print*,'ind=10, iq==1, ik==2, ibnd=2, jbnd=2, itemp==1 ', trans_prob(10)
!
CALL mp_sum(tmp, world_comm)
!
......@@ -274,11 +269,11 @@
DO ik = 1, nkqtotf/2
!
DO ibnd = 1, ibndmax-ibndmin+1
ekk = etf_all (ibndmin-1+ibnd, ik)
ekk = etf_all (ibnd, ik)
n = 0
tmp2 = 0.0_DP
DO jbnd = 1, ibndmax-ibndmin+1
ekk2 = etf_all (ibndmin-1+jbnd, ik)
ekk2 = etf_all (jbnd, ik)
IF ( ABS(ekk2-ekk) < eps6 ) THEN
n = n + 1
tmp2 = tmp2 + tmp(ibnd,ik,itemp)
......@@ -293,12 +288,15 @@
ENDDO ! nkqtotf
ENDDO ! itemp
!
!
DO itemp=1, nstemp
DO itemp=1, nstemp
etemp = transp_temp(itemp)
DO ik=1, nkqtotf/2
DO ibnd=1, ibndmax-ibndmin+1
IF ( ABS(tmp(ibnd, ik, itemp)) > eps160 ) THEN
F_SERTA(:, ibnd, ik, itemp) = vkk_all(:,ibnd,ik) / ( two * tmp(ibnd,ik,itemp) )
ekk = etf_all (ibnd, ik) - ef0(itemp)
dfnk = w0gauss( ekk / etemp, -99 ) / etemp
F_SERTA(:, ibnd, ik, itemp) = dfnk * vkk_all(:,ibnd,ik) / ( two * tmp(ibnd,ik,itemp) )
!F_SERTA(:, ibnd, ik, itemp) = vkk_all(:,ibnd,ik) / ( two * tmp(ibnd,ik,itemp) )
ENDIF
ENDDO
!IF (itemp==2) print*,'ik ',ik, SUM(F_SERTA(:,:,ik,2)), SUM(vkk_all(:,:,ik))
......
......@@ -25,7 +25,7 @@ subroutine hp_check_type(na)
!
USE ions_base, ONLY : ityp, nat, ntyp => nsp, tau
USE io_global, ONLY : stdout
USE symm_base, ONLY : nsym, set_sym
USE symm_base, ONLY : nsym, set_sym, ft, ftau
USE noncollin_module, ONLY : nspin_mag, m_loc
USE fft_base, ONLY : dfftp
USE ldaU_hp, ONLY : recalc_sym
......@@ -35,7 +35,7 @@ subroutine hp_check_type(na)
INTEGER, INTENT(IN) :: na ! the atom under consideration
!
INTEGER :: nt, ityp_save, nsym_old
INTEGER :: na_, nt_
INTEGER :: na_, nt_, isym
!
IF (nsym==1) RETURN
!
......@@ -91,6 +91,15 @@ subroutine hp_check_type(na)
!
DEALLOCATE(m_loc)
!
! Since symmetries were recomputed, we need to reinitialize vectors
! of fractional translations
!
DO isym = 1, nsym
ftau(1,isym) = NINT( ft(1,isym) * DBLE(dfftp%nr1) )
ftau(2,isym) = NINT( ft(2,isym) * DBLE(dfftp%nr2) )
ftau(3,isym) = NINT( ft(3,isym) * DBLE(dfftp%nr3) )
ENDDO
!
IF ( nsym == nsym_old ) THEN
WRITE( stdout, '(5x,"The number of symmetries is the same as in PWscf :")')
recalc_sym = .false.
......
......@@ -83,6 +83,15 @@ SUBROUTINE hp_init_q()
!
ENDIF
!
! Read the wavefunctions evc (at k) and evq (at k+q).
! Note: this is important because if nksq=1 then evc and evq are read only
! once (here) and then used throughout the code. This may happen e.g.
! when the ratio of the total number of k points (without k+q) and k pools
! is not an integer number (as a consequence some k pools will have nksq=1).
!
CALL get_buffer (evc, lrwfc, iuwfc, ikk)
IF (.NOT.lgamma .AND. nksq.EQ.1) CALL get_buffer (evq, lrwfc, iuwfc, ikq)
!
! 2) USPP: Compute the becp terms which are used in the rest of the code
!
IF (okvan) THEN
......@@ -91,10 +100,6 @@ SUBROUTINE hp_init_q()
!
CALL init_us_2 (npw, igk_k(1,ikk), xk(1,ikk), vkb)
!
! Read the wavefunctions evc at k
!
CALL get_buffer (evc, lrwfc, iuwfc, ikk)
!
! becp1 = <vkb|evc>
!
CALL calbec (npw, vkb, evc, becp1(ik))
......
......@@ -226,6 +226,8 @@
at(:,:) = at(:,:) / alat
!
END IF
IF ( alat < 1.9_dp ) CALL infomsg ('cell_base_init', &
'DEPRECATED: use true lattice parameter, not A to a.u. conversion factor')
!
! ... Generate the reciprocal lattice vectors
!
......
......@@ -39,7 +39,7 @@ MODULE control_flags
tnosee, tnosep, tnoseh, tcp, tcap, &
tconvthrs, tolp, convergence_criteria, tionstep, nstepe, &
tscreen, gamma_only, force_pairing, lecrpa, tddfpt, smallmem, &
tfirst, tlast, tprint, trescalee
tfirst, tlast, tprint, trescalee, max_xml_steps
!
PUBLIC :: fix_dependencies, check_flags
PUBLIC :: tksw, trhor, thdyn, trhow
......@@ -97,6 +97,7 @@ MODULE control_flags
INTEGER :: ndr = 0 !
INTEGER :: nomore = 0 !
INTEGER :: iprint =10 ! print output every iprint step
INTEGER :: max_xml_steps =0 ! max number of dynamics included in xml file if 0 all steps are included.
INTEGER :: isave = 0 ! write restart to ndr unit every isave step
!
! ... .TRUE. if only gamma point is used
......
......@@ -3587,7 +3587,7 @@ end subroutine tau_xc_array_spin
if (rup.gt.eps.and.sup.gt.eps) then
drup = min (1.d-4, 1.d-2 * rup)
dsup = min (1.d-4, 1.d-2 * sdw)
dsup = min (1.d-4, 1.d-2 * sup)
!
! derivatives of exchange: up part
!
......
......@@ -12,7 +12,7 @@ MODULE global_version
!
SAVE
!
CHARACTER (LEN=6) :: version_number = '6.4'
CHARACTER (LEN=6) :: version_number = '6.4.1'
CHARACTER (LEN=12) :: svn_revision = 'unknown'
!
END MODULE global_version
......@@ -30,7 +30,6 @@ generate_dynamical_matrix.o \
generate_effective_charges.o \
h_h.o \
macro.o \
phcg.o \
rhod2vkb.o \
solve_e.o \
solve_ph.o \
......@@ -44,9 +43,15 @@ TLDEPS= pwlibs
all : tldeps phcg.x
<<<<<<< HEAD
phcg.x : libphcg.a $(PWOBJS) $(QEMODS) $(LIBOBJS)
$(LD) $(LDFLAGS) -o phcg.x \
libphcg.a $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
=======
phcg.x : phcg.o libphcg.a $(PWOBJS) $(QEMODS) $(LIBOBJS)
$(LD) $(LDFLAGS) -o [email protected] \
phcg.o libphcg.a $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
>>>>>>> 0efe83d29ae4c5f0bd004403548617d997955670
- ( cd ../../bin ; ln -fs ../PHonon/Gamma/phcg.x . )
tldeps :
if test -n "$(TLDEPS)" ; then \
......
......@@ -725,7 +725,7 @@ SUBROUTINE phq_readin()
IF (lmovecell) CALL errore('phq_readin', &
'The phonon code is not working after vc-relax',1)
IF (reduce_io) io_level=0
IF (reduce_io) io_level=1
if(elph_mat.and.fildvscf.eq.' ') call errore('phq_readin',&
'el-ph with wannier requires fildvscf',1)
......
......@@ -13,7 +13,6 @@ add_shift_cc.o \
add_shift_lc.o \
add_shift_us.o \
atomic_wfc_nc_proj.o \
cft.o \
chdens_module.o \
chdens_bspline.o \
compute_ppsi.o \
......
......@@ -15,16 +15,17 @@ SUBROUTINE addusdens1d (plan, prho)
! reciprocal space. The output of the routine is the planar average
! of the charge density.
!
USE kinds, ONLY: DP
USE kinds, ONLY: DP
USE cell_base, ONLY: alat, omega, celldm
USE ions_base, ONLY: nat, ntyp => nsp, ityp
USE fft_base, ONLY: dfftp
USE gvect, ONLY: eigts1, eigts2, eigts3, mill
USE lsda_mod, ONLY: current_spin
USE uspp, ONLY: becsum
USE uspp_param, ONLY: upf, lmaxq, nh
USE mp_bands, ONLY : intra_bgrp_comm
USE mp, ONLY : mp_sum
USE fft_scalar,ONLY: cft_1z
USE gvect, ONLY: eigts1, eigts2, eigts3, mill
USE lsda_mod, ONLY: current_spin
USE uspp, ONLY: becsum
USE uspp_param,ONLY: upf, lmaxq, nh
USE mp_bands, ONLY: intra_bgrp_comm
USE mp, ONLY: mp_sum
!
! here the local variables
......@@ -43,22 +44,18 @@ SUBROUTINE addusdens1d (plan, prho)
! the correspondence 1D with the 3D shells
! correspondence 1D FFT mesh G with array G
real(DP) :: plan (dfftp%nr3), dimz, g1d (3, dfftp%nr3), gg1d (dfftp%nr3), qmod (dfftp%nr3), &
qgr (dfftp%nr3), qgi (dfftp%nr3), ylmk0 (dfftp%nr3, lmaxq * lmaxq)
real(DP), intent(out) :: plan (dfftp%nr3)
! the planar average
real(dp) :: dimz, g1d (3, dfftp%nr3), gg1d (dfftp%nr3), &
qmod (dfftp%nr3), ylmk0 (dfftp%nr3, lmaxq * lmaxq)
! dimension along z
! ngm1d 3D vectors with the 1D G of this proc
! ngm1d scalars with the modulus of 1D G
! the modulus of G
! real and
! imaginary part of qg
! the spherical harmonics
COMPLEX(DP) :: skk, prho (dfftp%nnr), qg (dfftp%nr3x)
! auxiliary variable
! auxiliary space for the charge
! auxiliary variable for FFT
! auxiliary variable for rho(G,nspin)
COMPLEX(DP), intent(in) :: prho (dfftp%nnr)
!
COMPLEX(dp) :: skk, qg (dfftp%nr3x), qgout (dfftp%nr3)
COMPLEX(DP), ALLOCATABLE :: qgm(:), aux (:)
......@@ -108,17 +105,14 @@ SUBROUTINE addusdens1d (plan, prho)
ELSE
qg(:) = (0.d0, 0.d0)
ENDIF
DEALLOCATE (aux, qgm)
CALL mp_sum( qg, intra_bgrp_comm )
!
CALL cft_1z (qg, 1, dfftp%nr3, dfftp%nr3, 1, qgout)
dimz = alat * celldm (3)
DO ig = 1, dfftp%nr3
qgr (ig) = dble (qg (ig) )
qgi (ig) = aimag (qg (ig) )
plan (ig) = DBLE(qgout(ig)) * omega / dimz
ENDDO
CALL cft (qgr, qgi, dfftp%nr3, dfftp%nr3, dfftp%nr3, 1)
DO ig = 1, dfftp%nr3
plan (ig) = qgr (ig) * omega / dimz
ENDDO
DEALLOCATE (aux, qgm)
RETURN
END SUBROUTINE addusdens1d
......@@ -47,7 +47,6 @@ PROGRAM average
! awin the size of the window for macroscopic average (a.u.)
!
USE kinds, ONLY : DP
USE klist, ONLY : nks
USE parameters, ONLY : ntypx
USE constants, ONLY : pi, eps8
USE run_info, ONLY : title
......@@ -58,15 +57,14 @@ PROGRAM average
USE gvecs, ONLY : doublegrid, gcutms, dual
USE gvecw, ONLY : ecutwfc
USE fft_base, ONLY : dfftp
USE fft_types, ONLY : fft_type_allocate
USE fft_base, ONLY : dffts
USE fft_scalar, ONLY : cft_1z
USE ions_base, ONLY : zv, tau, nat, ntyp => nsp, ityp, atm
USE lsda_mod, ONLY : nspin
USE wavefunctions, ONLY : psic
USE io_files, ONLY : iunpun
USE scf, ONLY : rho
USE mp_global, ONLY : mp_startup
USE mp_bands, ONLY : intra_bgrp_comm, nyfft
USE mp_world, ONLY : nproc
USE environment, ONLY : environment_start, environment_end
USE control_flags, ONLY : gamma_only
!
......@@ -96,6 +94,7 @@ PROGRAM average
! the function to average in thick mesh (real part)
! the function to average in thick mesh (im. part)
! the macroscopic average
COMPLEX(DP), ALLOCATABLE :: func(:), funco(:)
REAL(DP), ALLOCATABLE :: funcr (:), funci (:)
! the function to average (real part)
! the function to average (im. part)
......@@ -113,18 +112,19 @@ PROGRAM average
!
! initialise environment
!
#if defined(__MPI)
CALL mp_startup ( )
#endif
CALL environment_start ( 'AVERAGE' )
!
! Works for parallel machines but only for one processor !!!
! Works for parallel machines but only for one processor
!
IF ( nproc > 1 ) CALL errore ('average ', 'run on a single processor', 1)
!
IF ( ionode ) THEN
!
inunit = 5
CALL input_from_file ( )
READ (inunit, *, err = 1100, iostat = ios) nfile
IF ( nfile <=0 ) CALL errore ('average ', 'nfile is wrong ', 1)
IF ( nfile <=0 ) CALL errore ('average ', 'nfile is wrong, or bad input redirection ', 1)
ALLOCATE ( filename (nfile) )
ALLOCATE ( weight (nfile) )
DO ifile = 1, nfile
......@@ -179,26 +179,18 @@ PROGRAM average
ELSE
gcutms = gcutm
ENDIF
! not sure whether this is the correct thing to do in presence
! of a double grid, but the info on nrXs is not read from file!
dffts%nr1 = dfftp%nr1 ; dffts%nr2 = dfftp%nr2 ; dffts%nr3 = dfftp%nr3
! as above: this can be used in allocate_fft
nks = 0
!
CALL volume (alat, at (1, 1), at (1, 2), at (1, 3), omega)
CALL fft_type_allocate ( dfftp, at, bg, gcutm, intra_bgrp_comm, nyfft=nyfft )
CALL fft_type_allocate ( dffts, at, bg, gcutms, intra_bgrp_comm, nyfft=nyfft )
CALL data_structure ( gamma_only )
CALL allocate_fft ( )
!
rho%of_r = 0.d0
dfftp%nnr = dfftp%nr1x*dfftp%nr2x*dfftp%nr3x
ALLOCATE (rho%of_r(dfftp%nnr,1), psic(dfftp%nnr) )
rho%of_r = 0.0_dp
!
! Read first file
!
CALL plot_io (filename (1), title, dfftp%nr1x, dfftp%nr2x, dfftp%nr3x, dfftp%nr1, dfftp%nr2, &
dfftp%nr3, nat, ntyp, ibrav, celldm, at, gcutm, dual, ecutwfc, &
plot_num, atm, ityp, zv, tau, rho%of_r, -1)
CALL plot_io (filename (1), title, dfftp%nr1x, dfftp%nr2x, dfftp%nr3x, &
dfftp%nr1, dfftp%nr2, dfftp%nr3, nat, ntyp, ibrav, celldm, at, &
gcutm, dual, ecutwfc, plot_num, atm, ityp, zv, tau, rho%of_r, -1)
!
DO ir = 1, dfftp%nnr
psic (ir) = weight (1) * cmplx(rho%of_r(ir, 1),0.d0,kind=DP)
......@@ -298,9 +290,12 @@ PROGRAM average
!
! add more points to compute the macroscopic average
!
CALL cft (funcr, funci, nfft, nfft, nfft, - 1)
CALL dscal (nfft, 1.d0 / nfft, funcr, 1)
CALL dscal (nfft, 1.d0 / nfft, funci, 1)
ALLOCATE ( func(nfft), funco(nfft) )
func(:) = CMPLX ( funcr, funci, KIND=dp )
CALL cft_1z( func,1,nfft,nfft,-1,funco)
funcr(:) = REAL ( funco(:), KIND=dp )
funci(:) =AIMAG ( funco(:) )
DEALLOCATE ( func, funco )
!
DO k = 1, npt
IF (k<=nfft / 2) THEN
......@@ -324,7 +319,12 @@ PROGRAM average
gim (nfft / 2 + 1) = funci (nfft / 2 + 1)
ENDIF
!
CALL cft (gre, gim, npt, npt, npt, 1)
ALLOCATE ( func(npt), funco(npt) )
func(:) = CMPLX ( gre(:), gim(:), KIND=dp )
CALL cft_1z( func,1,npt,npt,1,funco)
gre(:) = REAL ( funco(:), KIND=dp )
gim(:) =AIMAG ( funco(:) )
DEALLOCATE ( func, funco )
!
END IF
!
......
This diff is collapsed.
......@@ -32,6 +32,7 @@ add_shift_us.o : ../../Modules/wavefunctions.o
add_shift_us.o : ../../PW/src/pwcom.o
add_shift_us.o : ../../PW/src/symme.o
add_shift_us.o : ../../UtilXlib/mp.o
addusdens1d.o : ../../FFTXlib/fft_scalar.o
addusdens1d.o : ../../Modules/cell_base.o
addusdens1d.o : ../../Modules/fft_base.o
addusdens1d.o : ../../Modules/ions_base.o
......@@ -50,7 +51,7 @@ atomic_wfc_nc_proj.o : ../../Modules/recvec.o
atomic_wfc_nc_proj.o : ../../Modules/uspp.o
atomic_wfc_nc_proj.o : ../../PW/src/atomic_wfc_mod.o
atomic_wfc_nc_proj.o : ../../PW/src/pwcom.o
average.o : ../../FFTXlib/fft_types.o
average.o : ../../FFTXlib/fft_scalar.o
average.o : ../../Modules/cell_base.o
average.o : ../../Modules/constants.o
average.o : ../../Modules/control_flags.o
......@@ -61,8 +62,8 @@ average.o : ../../Modules/io_files.o
average.o : ../../Modules/io_global.o
average.o : ../../Modules/ions_base.o
average.o : ../../Modules/kind.o
average.o : ../../Modules/mp_bands.o
average.o : ../../Modules/mp_global.o
average.o : ../../Modules/mp_world.o
average.o : ../../Modules/parameters.o
average.o : ../../Modules/recvec.o
average.o : ../../Modules/run_info.o
......@@ -87,7 +88,6 @@ bands.o : ../../Modules/uspp.o
bands.o : ../../Modules/wavefunctions.o
bands.o : ../../PW/src/pwcom.o
bands.o : ../../UtilXlib/mp.o
cft.o : ../../Modules/kind.o
chdens_bspline.o : ../../Modules/bspline.o
chdens_bspline.o : ../../Modules/cell_base.o
chdens_bspline.o : ../../Modules/fft_base.o
......@@ -783,7 +783,10 @@ vasp_xml_module.o : ../../Modules/noncol.o
vasp_xml_module.o : ../../Modules/paw_variables.o
vasp_xml_module.o : ../../Modules/qes_libs_module.o
vasp_xml_module.o : ../../Modules/qes_types_module.o
<<<<<<< HEAD
vasp_xml_module.o : ../../Modules/read_pseudo.o
=======
>>>>>>> 0efe83d29ae4c5f0bd004403548617d997955670
vasp_xml_module.o : ../../Modules/recvec.o
vasp_xml_module.o : ../../Modules/recvec_subs.o
vasp_xml_module.o : ../../Modules/uspp.o
......
......@@ -125,7 +125,6 @@ SUBROUTINE readxmlfile_vasp(iexch,icorr,igcx,igcc,inlc,ierr)
USE qes_libs_module, ONLY : qes_reset
USE io_rho_xml, ONLY : read_scf
USE fft_rho, ONLY : rho_g2r
USE read_pseudo_mod, ONLY : readpp
USE uspp, ONLY : becsum
USE uspp_param, ONLY : upf
USE paw_variables, ONLY : okpaw, ddd_PAW
......
......@@ -62,6 +62,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
if (not automatic)
nks
xk_x, xk_y, xk_z, wk
if (tpipa_b or crystal_b in a 'bands' calculation) see Doc/brillouin_zones.pdf
[ @b CELL_PARAMETERS { alat | bohr | angstrom }
v1(1) v1(2) v1(3)
......@@ -479,7 +480,16 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
see below for the other parameters.
For ibrav=0 specify the lattice vectors in @ref CELL_PARAMETERS,
optionally the lattice parameter alat = celldm(1) (in a.u.)
or = A (in Angstrom), or else it is taken from @ref CELL_PARAMETERS
or = A (in Angstrom). If not specified, the lattice parameter is
taken from @ref CELL_PARAMETERS
IMPORTANT NOTICE 1:
with ibrav=0 lattice vectors must be given with a sufficiently large
number of digits and with the correct symmetry, or else symmetry
detection may fail and strange problems may arise in symmetrization.
IMPORTANT NOTICE 2:
do not use celldm(1) or A as a.u. to Ang conversion factor,
use the true lattice parameters or nothing,
specify units in @ref CELL_PARAMETERS and @ref ATOMIC_POSITIONS
ibrav structure celldm(2)-celldm(6)
or: b,c,cosbc,cosac,cosab
......@@ -2566,7 +2576,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
Select which of the cell parameters should be moved:
}
opt -val 'all' { all axis and angles are moved }
opt -val 'ibrav' { all axis and angles are moved, but the lattice but be representable with the initial ibrav choice }
opt -val 'ibrav' { all axis and angles are moved, but the lattice remains consistent with the initial ibrav choice }
opt -val 'x' { only the x component of axis 1 (v1_x) is moved }
opt -val 'y' { only the y component of axis 2 (v2_y) is moved }
opt -val 'z' { only the z component of axis 3 (v3_z) is moved }
......@@ -2819,7 +2829,8 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
opt -val tpiba_b {
Used for band-structure plots.
k-points are in units of 2 pi/a.
See Doc/brillouin_zones.pdf for usage of BZ labels;
otherwise, k-points are in units of 2 pi/a.
nks points specify nks-1 lines in reciprocal space.
Every couple of points identifies the initial and
final point of a line. pw.x generates N intermediate
......@@ -2828,6 +2839,7 @@ input_description -distribution {Quantum Espresso} -package PWscf -program pw.x
opt -val crystal_b {
As tpiba_b, but k-points are in crystal coordinates.
See Doc/brillouin_zones.pdf for usage of BZ labels.
}
opt -val tpiba_c {
......
......@@ -3,11 +3,11 @@ src_dir: ./src/
output_dir: ./doc
project_website: http://www.quantum-espresso.org/
summary: Quantum Espresso is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials.
authors: Paolo Gianozzi et al.
authors: Paolo Giannozzi et al.
author_description: The Quantum Espresso project is developed by the QE community.
github: https://github.com/QEF/q-e
email: [email protected]
project_sourceforge: http://qeforge.qe-forge.org/gf/project/q-e/
gitlab: https://gitlab.com/QEF/q-e
email: [email protected]
predocmark: >
media_dir: ./media
page_dir: ./Ford
......@@ -27,12 +27,11 @@ extra_filetypes: sh #
[Quantum ESPRESSO](http://www.quantum-espresso.org/) is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale.
It is based on density-functional theory, plane waves, and pseudopotentials.
Quantum ESPRESSO has evolved into a distribution of independent and inter-operable codes in the spirit of an open-source project. The Quantum ESPRESSO distribution consists of a “historical” core set of components, and a set of plug-ins that perform more advanced tasks, plus a number of third-party packages designed to be inter-operable with the core components. Researchers active in the field of electronic-structure calculations are encouraged to participate in the project by contributing their own codes or by implementing their own ideas into existing codes.
Quantum ESPRESSO has evolved into a distribution of inter-operable codes in the spirit of an open-source project. The Quantum ESPRESSO distribution consists of a core set of components, a set of additional packages performing more advanced tasks, and a number of third-party packages designed to be inter-operable with the core components. Researchers active in the field of electronic-structure calculations are encouraged to participate in the project by contributing their own codes or by implementing their own ideas into existing codes.
Quantum ESPRESSO is an open initiative, in collaboration with many groups world-wide, coordinated by the Quantum ESPRESSO Foundation. Present members of the latter include Scuola Internazionale Superiore di Studi Avanzati, the Abdus Salam International Centre for Theoretical Physics (Trieste), the CINECA National Supercomputing Center (Bologna), the Ecole Polytechnique Fédérale de Lausanne, the University of North Texas (Dallas), the Duke University (Durham). Courses on modern electronic-structure theory with hands-on tutorials on the Quantum ESPRESSO codes are offered on a regular basis in collaboration with the Abdus Salam International Centre for Theoretical Physics in Trieste.
Quantum ESPRESSO is an open initiative, in collaboration with many groups world-wide, coordinated by the Quantum ESPRESSO Foundation. Present members of the latter include Scuola Internazionale Superiore di Studi Avanzati, the Abdus Salam International Centre for Theoretical Physics (Trieste), the CINECA National Supercomputing Center (Bologna), the Ecole Polytechnique Fédérale de Lausanne, the University of North Texas (Dallas), the Oxford University. Courses on modern electronic-structure theory with hands-on tutorials on the Quantum ESPRESSO codes are offered on a regular basis in collaboration with the Abdus Salam International Centre for Theoretical Physics in Trieste.
The reference technical manuscript for the latest pubic release is:
[P. Giannozzi, S. Baroni, N. Bonini, M. Calandra, R. Car, C. Cavazzoni, D. Ceresoli, G. L. Chiarotti, M. Cococcioni, I. Dabo, A. Dal Corso, S. Fabris, G. Fratesi, S. de Gironcoli, R. Gebauer, U. Gerstmann, C. Gougoussis, A. Kokalj, M. Lazzeri, L. Martin-Samos, N. Marzari, F. Mauri, R. Mazzarello, S. Paolini, A. Pasquarello, L. Paulatto, C. Sbraccia, S. Scandolo, G. Sclauzero, A. P. Seitsonen, A. Smogunov, P. Umari, R. M. Wentzcovitch, J.Phys.:Condens.Matter, 22, 395502 (2009)](dx.doi.org/10.1088/0953-8984/21/39/395502)
The reference technical manuscript for the latest public release is:
[P. Giannozzi et al., J.Phys.:Condens.Matter 29, 465901 (2017)](http://iopscience.iop.org/article/10.1088/1361-648X/aa8f79)
......@@ -27,7 +27,11 @@ USE force_mod, ONLY: force, sigma
USE control_flags,ONLY: nstep, n_scf_steps, scf_error, conv_elec
USE fcp_variables,ONLY: fcp_mu, lfcpopt,