Commit d2b3a5d8 authored by giannozz's avatar giannozz

Merge branch 'master' into 'develop'

Added check for missing force term for hybrid functionals + USPP/PAW

See merge request QEF/q-e!315
parents 9a858087 fc5843bc
......@@ -119,7 +119,7 @@ QEFFT=../../FFTXlib/libqefft.a
TLDEPS= bindir mods libs
TLDEPS= bindir libs mods
all : tldeps libcp.a manycp.x cp.x wfdd.x #cppp.x
......@@ -453,28 +453,28 @@ default :
{\em If no target specified, ask for one, giving a list of possibilities}
pw : bindir libfft libdavid libcg libla libutil mods liblapack libs libiotk dftd3
pw : pwlibs
if test -d PW ; then \
( cd PW ; $(MAKE) TLDEPS= all || exit 1) ; fi
{\em Target {\tt pw}: first check the list of dependencies, bindir etc.,
{\em Target {\tt pw}: first check the list of dependencies ({\tt pwlib} in this case),
do what is needed; then go into {\tt PW/} and give command
{\tt make all} (with empty value of TLDEPS: this is likely no longer needed).
Note the use of {\tt exit 1}, which is required to forward
{\tt make all}. Note the use of {\tt exit 1}, which is required to forward
the exit status of the sub-directory make to this makefile, since the section
in parenthesis is run in a subshell and the {\tt if / fi} block will otherwise
``hide'' its return status and ``make'' will continue in case of errors. }
See below for the meaning of TLDEPS.
gipaw : pw
gipaw : pwlibs
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
{\em Target {\tt gipaw}: do target pw, then go into directory
{\em Target {\tt gipaw}: do target {\tt pwlibs}, then go into directory
{\tt install/}, execute {\tt make gipaw} using {\tt plugins\_makefile}
as Makefile. This will check if GIPAW is there, download from the network
if not, compile and link it}
libblas : touch-dummy
libblas :
cd install ; $(MAKE) -f extlibs_makefile $@
{\em Target {\tt libblas}: this is an external library, that may or may
......@@ -501,7 +501,7 @@ pwtools: pw
{\em Target {\tt pw}: go into {\tt src/} if it exists, and (apart
from \texttt{make} wizardry) give command {\tt make pw}. It is important
to note that {\tt pwtools} has to depend on {\tt pw} or else this
that {\tt pwtools} explicitly depends upon {\tt pw} or else this
makefile will break when calling parallel make using {\tt make -j\# }
Other targets are quite similar: go into a subdirectory, e.g.
{\tt Doc/} and '{\tt make} something', e.g. {\tt make clean}.}
......@@ -516,8 +516,6 @@ include ../../
{\em Contains machine- and \qe-specific definitions}
$(MOD_FLAG)../../KS_Solvers/Davidson \
$(MOD_FLAG)../../KS_Solvers/CG \
{\em Location of needed modules, used in \texttt{};
......@@ -536,17 +534,26 @@ wannier_enrg.o
{\em List of objects - add here new objects, or delete from this list. Do not
forget the backslash! It ensure continuation of the line}
QEMODS=../../Modules/libqemod.a ../../KS_Solvers/Davidson/libdavid.a .....
QEMODS=../../Modules/libqemod.a \
../../KS_Solvers/libks_solvers.a \
{\em F95 module objects needed for compiling and linking}
TLDEPS=bindir mods libs liblapack libblas libenviron
TLDEPS=bindir libs mods libks_solvers dftd3
{\em TLDEPS=Top-Level DEPendencieS: a machinery to ensure proper
compilation with correct dependencies also if compiling from inside
a package directory and not from top level}
a package directory and not from top level. In the top-level Makefile,
TLDEPS is set to an empty string (TLDEPS=) and transmitted to Makefiles
in the subdirectories. These contain a target "tldeps" that does nothing
if TLDEPS is empty (i.e. executing from the top level); it goes to the
top-level directory and executes TLDEPS ortherwise. TLDEPS in subdirectory
Makefiles must be set to the same dependencies of the intended target
(e.g. pw.x in the following example) in the top-level Makefile.
all : tldeps pw.x generate_vdW_kernel_table.x
all : tldeps pw.x generate_vdW_kernel_table.x ...
{\em Targets that will be build - add here new executables}
......@@ -415,9 +415,9 @@ and libraries are also required.
As a rule, \qe\ tries to keep compatibility with older compilers,
avoiding nonstandard extensions and newer features that
are not widespread or stabilized. No warranty, however, if
your compiler is older than $\sim 5$ years or so. The same applies to
mathematical and MPI libraries.
are not widespread or stabilized. If however your compiler is older
than $\sim 5$ years or so, it is unlikely to work. The same applies
to mathematical and MPI libraries.
Big machines with
specialized hardware (e.g. IBM SP, CRAY, etc) typically have a
......@@ -1111,7 +1111,7 @@ add preprocessing option \texttt{-Dzdotc=zdotc\_wrapper} to \texttt{DFLAGS}.
The Intel compiler ifort \texttt{}
produces fast executables, at least on Intel CPUs, but not all versions
work as expected (see below). In case of trouble, update your version
work as expected. In case of trouble, update your version
with the most recent patches. Since each major release of ifort
differs a lot from the previous one, compiled objects from different
releases may be incompatible and should not be mixed.
......@@ -1132,23 +1132,7 @@ The warning: {\em feupdateenv is not implemented and will always fail},
can be safely ignored. Warnings on ``bad preprocessing option'' when compiling
iotk and complains about ``recommended formats'' may also be ignored.
The following compiler releases are known to give segmentation faults
in at least some cases of compilation of \qe\ v.6.0:
\begin{quote} Build 20101006\\ Build 20101116\\ Build 20110112\\ Build 20110427\\ Build 20110719\\ Build 20151021
(Filippo Spiga, Aug. 2016)
{\bf ifort v.12}: release 12.0.0 miscompiles iotk, leading to
mysterious errors when reading data files. Workaround: increase
the parameter BLOCKSIZE to e.g. 131072*1024 when opening files in
\texttt{iotk/src/iotk\_files.f90} (info by Lorenzo Paulatto,
Nov. 2010).
Versions v.12 and earlier of ifort are no longer supported by QE v.\version.
\paragraph{Linux PCs with MKL libraries}
On Intel CPUs it is very convenient to use Intel MKL libraries
......@@ -1239,14 +1223,14 @@ Another option is Cygwin, a UNIX environment which runs under Windows: see\\
Finally, Windows-10 users may enable the Windows Subsystem for Linux
(see here:\\
install a Linux distribution, compile \qe\ as on Linux.
install a Linux distribution, compile \qe\ as on Linux. It works very well.
\subsubsection{Mac OS}
Mac OS-X machines (10.4 and later) with Intel CPUs are supported
by \configure, both with gfortran and with the Intel compiler ifort
and MKL libraries.
Parallel compilation with OpenMPI also works.
Mac OS-X machines with gfortran or with the Intel compiler ifort
and MKL libraries should work, but "your mileage may vary", depending
upon the specific software stack you are using. Parallel compilation
with OpenMPI should also work.
Gfortran information and binaries for Mac OS-X here:
\texttt{} and
......@@ -49,7 +49,7 @@ QEMODS = ../../Modules/libqemod.a ../../FFTXlib/libqefft.a \
LIBMIN= ../minpack/minpacklib.a
all : tldeps gww.x gww_fit.x libgww.a
......@@ -52,7 +52,7 @@ PWOBJS = ../../PW/src/libpw.a
LIBMIN= ../minpack/minpacklib.a
TLDEPS= pwlibs
TLDEPS= phlibs
all : tldeps pw4gww.x
......@@ -23,7 +23,7 @@ QEMODS = ../../Modules/libqemod.a ../../FFTXlib/libqefft.a \
../../KS_Solvers/libks_solvers.a \
../../LAXlib/libqela.a ../../UtilXlib/libutil.a
TLDEPS=bindir mods libs gwwlib
TLDEPS=bindir libs mods gwwlib
all : tldeps simple_bse.x libsimple_exc.a
# Makefile for HP
include ../../
# location of needed modules and included files (if any)
$(MOD_FLAG)../../PW/src \
......@@ -67,7 +67,7 @@ hp.x : hp_main.o libhp.a $(PWOBJS) $(LRMODS) $(LIBOBJS)
$(LD) $(LDFLAGS) -o [email protected] hp_main.o libhp.a \
- ( cd ../../bin ; ln -fs ../HP/src/hp.x . )
tldeps :
if test -n "$(TLDEPS)" ; then \
( cd ../.. ; $(MAKE) $(TLDEPS) || exit 1 ) ; fi
......@@ -34,12 +34,4 @@ TEST : la_test.x
clean :
- /bin/rm -f *.o *.a *.d *.i *~ *_tmp.f90 *.mod *.L *.x
# .PHONY forces execution of a rule irrespective of the presence of an
# updated file with the same name of the rule. In this way, the script
# that generates version.f90 always runs, updating the version if you
# execute "svn update". The update_version script takes care of not
# changing the file if the svn version did not change
.PHONY: all clean
include make.depend
......@@ -55,7 +55,7 @@ mode_group.o \
mix_pot.o \
TLDEPS=libfft mods
TLDEPS=mods pwlibs
all : liblrmod.a
......@@ -128,10 +128,6 @@ upf : libs mods
if test -d upftools ; then \
( cd upftools ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
pw_export : pwlibs
if test -d PP ; then \
( cd PP ; $(MAKE) TLDEPS= pw_export.x || exit 1 ) ; fi
xspectra : pwlibs
if test -d XSpectra ; then \
( cd XSpectra ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
......@@ -257,7 +253,7 @@ plumed:
west: pw
( cd install ; $(MAKE) -f plugins_makefile [email protected] || exit 1 )
SternheimerGW: pw lrmods
SternheimerGW: lrmods
( cd install ; $(MAKE) -f plugins_makefile [email protected] || exit 1 )
......@@ -162,7 +162,7 @@ w0gauss.o \
w1gauss.o \
TLDEPS=libiotk libfox libutil libla libfft
all : libqemod.a
......@@ -1354,9 +1354,10 @@ you may not find all the symmetries you expect because:
\item the number of significant figures in the atomic positions is not
large enough. In file \texttt{PW/src/eqvect.f90}, the variable \texttt{accep} is used to
decide whether a rotation is a symmetry operation. Its current value
($10^{-5}$) is quite strict: a rotated atom must coincide with
($10^{-5}$), set in module \texttt{PW/src/symm\_base.f90},
is quite strict: a rotated atom must coincide with
another atom to 5 significant digits. You may change the value of
accep and recompile.
\texttt{accep} and recompile.
\item they are not acceptable symmetry operations of the Bravais
lattice. This is the case for C$_{60}$, for instance: the $I_h$
icosahedral group of C$_{60}$ contains 5-fold rotations that are
......@@ -247,7 +247,7 @@ QEMODS=../../Modules/libqemod.a \
../../KS_Solvers/libks_solvers.a \
../../FFTXlib/libqefft.a ../../LAXlib/libqela.a ../../UtilXlib/libutil.a ../../dft-d3/libdftd3qe.a
TLDEPS=bindir mods libs liblapack libblas dftd3
TLDEPS= bindir libs mods libks_solvers dftd3
all : tldeps pw.x generate_vdW_kernel_table.x generate_rVV10_kernel_table.x
......@@ -59,7 +59,7 @@ SUBROUTINE setup()
find_sym, inverse_s, no_t_rev, fft_fact, &
USE wvfct, ONLY : nbnd, nbndx
USE control_flags, ONLY : tr2, ethr, lscf, lmd, david, lecrpa, &
USE control_flags, ONLY : tr2, ethr, lscf, lbfgs, lmd, david, lecrpa, &
isolve, niter, noinv, ts_vdw, &
lbands, use_para_diag, gamma_only, &
......@@ -131,10 +131,11 @@ SUBROUTINE setup()
'hybrid XC not allowed in non-scf calculations', 1 )
IF ( ANY (upf(1:ntyp)%nlcc) ) CALL infomsg( 'setup ', 'BEWARE:' // &
& ' nonlinear core correction is not consistent with hybrid XC')
!IF (okpaw) CALL errore('setup','PAW and hybrid XC not tested',1)
IF (okvan) THEN
IF (ecutfock /= 4*ecutwfc) CALL infomsg &
('setup','Warning: US/PAW use ecutfock=4*ecutwfc, ecutfock ignored')
IF ( lmd .OR. lbfgs ) CALL errore &
('setup','forces for hybrid functionals + US/PAW not implemented')
IF ( noncolin ) CALL errore &
('setup','Noncolinear hybrid XC for USPP not implemented',1)
......@@ -43,7 +43,7 @@ QEMODS = ../../Modules/libqemod.a ../../FFTXlib/libqefft.a \
../../LAXlib/libqela.a ../../UtilXlib/libutil.a ../../dft-d3/libdftd3qe.a
PWOBJS = ../../PW/src/libpw.a
TLDEPS = bindir libs pw
TLDEPS = pwlibs
all : tldeps xspectra.x spectra_correction.x molecularnexafs.x
......@@ -109,7 +109,7 @@ parameters.o
QEMODS=../../Modules/libqemod.a ../../FFTXlib/libqefft.a ../../UtilXlib/libutil.a
TLDEPS= bindir mods libs
TLDEPS= bindir libs mods
all: tldeps ld1.x
......@@ -8,7 +8,7 @@ MODFLAGS= $(BASEMOD_FLAGS)
OBJS = write_upf.o read_upf.o
QEMODS = ../Modules/libqemod.a ../FFTXlib/libqefft.a ../UtilXlib/libutil.a
TLDEPS = mods libs libfox
TLDEPS = libs mods
all : tldeps casino2upf.x cpmd2upf.x fhi2upf.x fpmd2upf.x \
ncpp2upf.x oldcp2upf.x read_upf_tofile.x rrkj2upf.x upf2casino.x \
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment