beccopy was doing y=x in the k-point case and x=y in the gamma only case
this combined with store_becxx0 which was unnecessarily invoked when not doing an EXX calculation to annihilate the value of <beta|psi> when gamma-only doing a gamma-only calculation
fixes:
1. beccopy now always does the same thing (with the illogical but commonplace order of arguments estabilished by dcopy, please check that it is the expected on in ./PHonon/PH/dhdrhopsi.f90 and ./PHonon/PH/dynmat_us.f90)
2. store_becxx is no more active when dft is not hybrid
The bug never surfaced in phonon (only place where beccopy is used) because phonon does not work with Gamma-only
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13125 c92efa57-630b-4861-b058-cf58834340f0
1. instead of doing a mp_sum(exxbuff) I have introduced a series of communicators that can be used to broadcast the exxbuff among pools with the minimumamount of communication and without the need to sum a billion zeros. This seem to be much faster, and should no more increase with the number of CPUs, which was worrying me a bit
2. changed the sign of PAW Fock energy, I'm not sure where the minus come from, but with this expression you get the correct ratio of Fock and Hartree energy when computing a single band
3. computing <beta|psi> for the k+q grid is no more done explicitly with calbec, but the projections are rotated from the irreducible grid. In order to do so, the values of <beta|psi> is stored in the routine sum_bands, which may not be the idea place
4. the ultrasoft augmentation is now added on the ecutfock grid, in both G spce and real space, as a consequence the real-space smooth grid is now unused, and I have removed ii (I have left the bits of code commented as it may come useful in the future)
5. (not EXX) when using verbosity=high, the various component of the PAW contribution to H and XC energies are printed on screen, as well as the total (plane waves+PAW) H and XC energies, this was particularly useful to test EXX and I was tired to havvign to add it again everytime I touch this part of the code
6. I'm a bit confused about the values of "printout", I'm afraid I may have messed something up in electrons. Now I have set printout to zero when exx_is_active, which seems to not print anything strange (Otherwise the HWF energy was absurd) from the svn diff" it looks like it was printout=1 before
LP
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13119 c92efa57-630b-4861-b058-cf58834340f0
1) the dependency upon module "extfield" via recently introduced "monopole"
variable made explicit in the call, with an optional variable
2) the code doesn't stop any longer in case it doesn't manage to find
symmetries, it just issue a warning, removes symmetry and proceeds
Should be harmless but please check. All make.depend files updated.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13114 c92efa57-630b-4861-b058-cf58834340f0
successive calls to init_vars_from_schema in read_file were trying to allocate an already allocated
allocatable. Reading of the header info removed from read_file
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13110 c92efa57-630b-4861-b058-cf58834340f0
The elements of C_2v and D_2 have been ordered so that
all the double groups have the same multiplication table.
C_6v and D_6 now have the same character table.
The definition of the matrices of SU(2) made more standard:
when n_z=0 the binary rotation axis direction is now with n_x >0, before
it was with n_y > 0.
These changes should be harmless except for the exchange of the names of
some irreducible representations of these three groups in some cases.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13091 c92efa57-630b-4861-b058-cf58834340f0
if 1) FFT dimensions are read from input, and 2) "clean_pw" is called
(for instance with finite k in order to perform a non-scf case).
I modified clean_pw so that it keeps track of the previous values of
the FFT dimensions. This should simply revert to the previous behavior.
A better solution would be to write routine that allocate and deallocate only
k-point-related variables, since this is what we typically need.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13009 c92efa57-630b-4861-b058-cf58834340f0
- no point in not perfroming task_group parallelization when m < ntask_group.
- some more timing report if verbosity >0
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12963 c92efa57-630b-4861-b058-cf58834340f0
(__ELPA_2015) and 2016.05.003 (__ELPA_2016). Link must be done manually (for
now). Validated using PW AUSURF112 (GAMMA), PW AUSURF112 (K) ans PW GRIR443.
CP tests to be done. Internal self-compiled ELPA very old still present but it
will be deprecated soon.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12942 c92efa57-630b-4861-b058-cf58834340f0
various specially taylored routines. Please report any anomaly in k-point
parallelization (there shouldn't be any, but who knows).
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12891 c92efa57-630b-4861-b058-cf58834340f0
as two files, one for up spin components and one for down spin components.
This seems to me meaningless. Now they are written as a single file.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12877 c92efa57-630b-4861-b058-cf58834340f0
not so smart and should be simplified as much as possible). Minor Makefile
change: it is no longer needed to compile Modules in order to run the makedeps
script (it is sufficient to regenerate the version.f90 file).
make.depend updated: there were several dependencies of nonexistent files.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12873 c92efa57-630b-4861-b058-cf58834340f0
the three pieces are in three different places: fsocket.f90 in Modules/,
sockets.c in clib/, run_driver in PW/src. Subroutine get_server_address might
actually be moved to module "command_line_options".
Version number updated to 6.beta (6.0.beta too long, 6.0bet? 6.0.b?)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12833 c92efa57-630b-4861-b058-cf58834340f0
are dumb but will be changed soon.
IMPORTANT NOTICE: binary files with option -D__XSD are now incompatible
with old-style ones.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12824 c92efa57-630b-4861-b058-cf58834340f0
to old one, pw_restart_new.f90 to new one. Binary files are still written in
the same format as before if __XSD is set, but the code is simplified and
disentangled from the I/O of xml file. PP files are currently not written to
the perfix.save directory: this has no practical consequences but will be soon
fixed anyway. Please test carefully in all possible cases. More simplification
of the code and of binary I/O will come soon.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12820 c92efa57-630b-4861-b058-cf58834340f0
to compute many FFTs at the same time, particularly usefull for EXX
but could be usefule for many linear response code as well
(for the time being implemented only for DFTI and internal FFTW,
should be trivial to extend other drivers)
- more clean-ups
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12815 c92efa57-630b-4861-b058-cf58834340f0
the global list of k-points, used for k-points parallelization, moved to a
single subroutine. Most of those pieces of code were never actually used
(k-point parallelization is not implemented in several of the utilities)
but just blindly copied from the code performing I/O of wavefunctions.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12720 c92efa57-630b-4861-b058-cf58834340f0
$outdir/$prefix.save and no longer into $outdir and name starting with $prefix.
I used a sort of hack and cannot guarantee that it will work for windows.
This introduces and incompatibility with previous output, but tehre will be
many more incompatibilities coming in the I/O so I don't think it is a major
problem. File names changed to "occup.txt" and "paw.txt" (they are text,
formatted file), not sure this is a wise choice. Shouldn't have side effects.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12719 c92efa57-630b-4861-b058-cf58834340f0
(it was acting only on descriptor variables, noneed to keep it into module)
- name change: all function/variables named *_dlay_* renamed *_type_* for consistency
- IMPORTANT: fft_type_allocate merged with real space grid initializaiton
some other grid functions removed/merged with fft types.
Since some initialization has been moved elseware there could be some SIDE EFFECT
- In practice, now grid dimensions (nr1, nr2, nr3) comes with fft variable definition
and variable allocation.
NEXT: review of the initialization/setting of the fft parallelization
- real space grid initialization subroutines moved to fft_types module
(it was acting only on descriptor variables, no need to keep it in Modules)
- name change: all function/variables named *_dlay_* renamed *_type_* for consistency
- IMPORTANT: fft_type_allocate merged with real space grid initializaiton
some other grid functions removed/merged with fft types.
Since some initialization has been moved elseware there could be some SIDE EFFECT
- In practice, now grid dimensions (nr1, nr2, nr3) comes with fft variable definition
and variable allocation.
NEXT: review of the initialization/setting of the fft parallelization
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12703 c92efa57-630b-4861-b058-cf58834340f0
allocate_fft. The reason is to move the printout of summary and of the memory
report before allocation f large arrays starts. Nothing should change apart
from minor details in the memory report. Please let me know if there are
problems in some specific cases - PG
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12681 c92efa57-630b-4861-b058-cf58834340f0
by a separate routine whenever the current_point changes.
require some more memory (but should of the order of the size of the
fft slice of a give proc at most)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12663 c92efa57-630b-4861-b058-cf58834340f0
(1:nat,1:nhm,1:maxir) to (1:maxir,1:nhm,1:nat) so that the needed
operations are performed on contiguous memory positions.
calbec, add_vuspsi, .. etc are waaay faster.
changed the indexing also in the only plase in TDDFPT where betasave was
referred. I dont know if it appears in any hidden project
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12662 c92efa57-630b-4861-b058-cf58834340f0
- FFT type now do not have any information about task group:
no need to temporary change the value of variable...
- When task group are not needed symple do not use "dtgs" data type
- FFT interfaces called with FFT datatype ONLY, do not perform
task groups trics any longer, this should simply thing a bit....
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12628 c92efa57-630b-4861-b058-cf58834340f0
fourier components of the augmentation charge for uspp and paw pseudos.
For each uspp and paw pseudopotential the l-dependent aumentation charge
q_nb_mb_l(r), stored in qfuncl(ir,nmb,l), is
- transformed in reciprocal space by bessel transform up to qmax = sqrt(ecutrho),
- smoothed by multiplying with a filter function filter(q/qmax,a,nn) and
- brought back in real space
where it overwrites the original array.
The filter function is : filter(x,a,nn) = exp(-axx) * \sum_{k=0,nn} (axx)**k/k!
The routine is inplace but smoothing is disabled by a logical parameter: smoothing=.false.
Still in testing stage, eventually smoothing/non smoothing will become either an
input option or an appropriate default depending on pseudoptential/calculation type.
In realus the temporary fix do_not_use_spline_inside_rinner = .true. is maintained
in order to pass the pw_berry test but it is incompatible with the smoothing idea and
I think should be removed. It makes a 1.4d-5 change in the energy, invisible w.r.t.
other errors involved.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12605 c92efa57-630b-4861-b058-cf58834340f0
In realus the l-dependednt q(r) is built (now actually copied from qfuncl), all works fine
and in the last stage of the routine the q(r) on the radial grid is used to fill the relevant
FFT grid pointsi for each atom.
This is done by a spline interpolation iexcept for the original vandebilt case (with rinner > 0)
where one can also use directly the qfcoef expansion to compute the value.
It shouldn't matter but in the pw_berry test case this change the energy by 1.4d-5, enough to make it fail.
Added a flag that keeps using the original method until a better understanding of the issue is reached.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12601 c92efa57-630b-4861-b058-cf58834340f0
l-dependent array in all cases.
This is already the case when upf%tpawp or upf%q_with_l are .true. .
For vanderbilt US pseudos, where nqf and rinner are non zero, we do here what otherwise
would be done multiple times in many parts of the code (such as in init_us_1, addusforce_r,
bp_calc_btq, compute_qdipol) whenever the q_l(r) were to be constructed.
For simple rrkj3 pseudos we duplicate the infomation contained in q(r) for all q_l(r).
This requires a little extra memory but unifies the treatment of q_l(r) and allows further
tweaking with the augmentation charge.
Variable upf%q_with_l set .true. at the end of the operation. It would be better to leave the
variable untouched at its input value and modify the routines that compute q_l(r) to just use
the now always present upf%qfuncl array but this is the first step before some cleanup.
setqf.f90 moved from PW/src to Modules, Makefiles and dependencies updated
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12591 c92efa57-630b-4861-b058-cf58834340f0
x-y-z to z-y-x (for a G->R transform) to make it consistent with the way
ffts are executed in the general parallel case.
changes to
- fft_dlay_scalar (in fft_types.f90)
- sticks_maps_scalar (in sticks_base.f90)
- all variant of fft_scalar.XXX.f90 ( tested for XXX=FFTW3 )
no more need to call fft_dlay_allocate with arguments like max(dfft%nr1x,dfft%nrx3) ... dfft%nr1x should be always fine.
changes should not be needed to CPV and GWW that use cfft3ds initializing data via the modified stick_maps_scalar and fft_dlay_scalar.
explicitely tested for CPV.
in PW, pw2blip.f90 uses cfft3ds. The new execution order needs a different definition of the auxiliary array do_fft_x -> do_fft_z,
that should now be the same as dfft%isind. For now it is initialized following the same logics as the original routine.
some auxiliary functions/subroutines like put_f_of_R, put_f_of_G, get_f_of_R, get_f_of_G added to fft_parallel to help
assigning/retrieving values to/from a distributed fft array in the parallel case.
These tools are NOT designed for efficiency but to make life easier in testing programs (see for instance test0.f90).
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12570 c92efa57-630b-4861-b058-cf58834340f0
(sort of, see below) during the inner SCF cycle of a hybrid calculation (Ivan)
(the exchange energy is computed at fixed exchange potential, not for the
current Kohn-Sham orbitals; still better than no energy at all as before)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12555 c92efa57-630b-4861-b058-cf58834340f0
as implemente dby Ivan Carnimeo. Still experimental but it seems to work
nicely (USPP not tested). To be activated using -D__EXX_ACE.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12554 c92efa57-630b-4861-b058-cf58834340f0
More specificaly:
1) Remove global variable npw (from wvfct) and use ngk(ik) (for optical TDDFPT codes)
or ngk(ikk) with ikk=ikks(ik) (for turboEELS). In some routines, ngk is assigned to
the local variable npw, i.e. npw=ngk(ik), and in other routines ngk is used directly.
2) Remove global indices igk(1:3) (from wvfct) and use igk_k(1:3,ik) (for optical TDDFPT codes)
or igk_k(1:3,ikk) with ikk=ikks(ik) (for turboEELS).
3) Remove global variable npwq (from qpoint) and use the local variable with the same name,
which is defined as npwq=ngk(ikq) with ikq=ikqs(ik) (i.e. index of the point k+q).
4) Remove global index variable igkq(1:3) (from qpoint) and use the global index variable
igk_k(1:3,ikq) with ikq=ikqs(ik).
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12487 c92efa57-630b-4861-b058-cf58834340f0
with root_group_id (identifying the root group).
Nothing change, both are set by default to 0,
but they have different meanings, and the use of root_group in the
inter_bgrp_comm communications, could led to error in the future.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12462 c92efa57-630b-4861-b058-cf58834340f0
1) Moved some TDDFPT-specific cases from the general routine LR_Modules/ch_psi_all.f90 to the TDDFPT routines;
2) Deleted the variable "tddfpt", because it is no longer needed anywhere (in the older versions of the code this variable was used to tell to the PHonon routines about TDDFPT specific operations);
3) Some other minor changes in TDDFPT.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12432 c92efa57-630b-4861-b058-cf58834340f0
variables deleted; almost all occurrences of "npw" made local (PW and PP only)
Variable "current_k" must be set before calling h_psi (as before, although it
was used only in some cases). All changes should be safe, but testing of PP
and PH is very limited.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12428 c92efa57-630b-4861-b058-cf58834340f0
They have been kept with the sole purpose to maintain the Gamma-only code and
the k-point code aligned. Since however some new parts (notably exx with USPP)
do not use them any longer, it doesn't seem to me justified to keep them,
adding unneeded complexity. They should be kept, with value igk(i)=i, only for
those parts of the code that are common to Gamma-only and to k-point cases.
Everything should work as before, as long as: igk(i)=i for gamma-only case;
nobody uses gamma-only H\psi on perturbations with q.ne.0
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12425 c92efa57-630b-4861-b058-cf58834340f0
to keep wave functions synchronized across multiple band groups, then we can
allow the computation of the diagonalization only in the first group,
freeing resources on the other groups so that they can already
prepare for receiving data without delay.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12397 c92efa57-630b-4861-b058-cf58834340f0
then we need to synchronize the eigenvalues and eigenvectors of the reduced hamiltonian as well.
Now all the former test cases that were failing, now seem to work.
NOT yet tested on BGQ
carlo
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12390 c92efa57-630b-4861-b058-cf58834340f0
In band group parallelization the G vectors and wave functions are replicated in all band groups,
and they should remain synchronized in order the diagonalization to work properly
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12389 c92efa57-630b-4861-b058-cf58834340f0
allocated and computed in a routine init_igk in module klist. This routine is
called by "hinit0" and by "read_file". Asymptotically, all codes using pw.x
data should read once from data file and never recompute them. This change
should be safe and shouldn't break anything; three postprocessing codes
needed some changes.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12377 c92efa57-630b-4861-b058-cf58834340f0
of pw.x, developed in a distinct branch are merged to the trunk.
Work done by:
Giovanni Borghi, Andrea Ferretti, Pietro Delugas
N.B. The feature is still experimental. To compile it,
add in make.sys the manual preprocessing flag
-D __XSD
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12372 c92efa57-630b-4861-b058-cf58834340f0
of a variable with the same name (no conflicts but it wasn't nice); source
beautification. Should be harmless: n_plane_waves is used only in two places
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12370 c92efa57-630b-4861-b058-cf58834340f0
prevent trouble with OS-X. May or may not work (it won't unless configure
is updated: please somebody with v.2.63 of autoconf do it), may turn out to
be obsolete anyway.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12364 c92efa57-630b-4861-b058-cf58834340f0
set to zero (it wasn't in the previous version with MS2)
IMPORTANT NOTE 1: anybody using the new QM-MM please check and report.
IMPORTANT NOTE 2: the way it is implemented assumes that QM-MM and ESM are
not both active
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12324 c92efa57-630b-4861-b058-cf58834340f0
to .false. in acfdt_in_pw.f90.
wfcinit.f90 checks whether wfc unit is open before reading. if not opens it and
closes it after reading. ie: the status of the unit is the same as it was originally.
makedeps.sh updated for ACFDT/src directory
all these changes should be harmless unless one plays with acfdt_in_pw
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12278 c92efa57-630b-4861-b058-cf58834340f0
latter was actually a pre-existing bug: some variables related to the
treatment of van der Waals interactions were neither set nor properly
broadcast. Not a big deal until the day you want to use them.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12275 c92efa57-630b-4861-b058-cf58834340f0
generated from the band group, and not from the pool group.
In general we need to review the band parallelization in PW, and its consequences,
before the next release.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12272 c92efa57-630b-4861-b058-cf58834340f0
it can be redefined locally in the only place where it is needed (compute_becxx).
Routines allocate_nlpot and n_plane_waves simplified a little bit.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12244 c92efa57-630b-4861-b058-cf58834340f0
The bug was very interesting: the "smooth" and the "custom" grid, that were
supposed to be the exactly the same, weren't: the ordering was different.
Added some comments, removed some others that did not apply any longer.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12242 c92efa57-630b-4861-b058-cf58834340f0
is always one k-point (not sure about the LSDA case, though). I am not sure
whether my fix is more correct than the previous situation:
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12197 c92efa57-630b-4861-b058-cf58834340f0
collects data distributed across pools and broadcast them to all processors.
Routines operating on pools are collected in file para.f90, whose comments
have been updated to reflect what those reoutine really do.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12194 c92efa57-630b-4861-b058-cf58834340f0
--- This line, and those below, will be ignored--
M PHonon/PH/phq_init.f90
M PHonon/PH/elphon.f90
M PW/src/xk_wk_collect.f90
M PW/src/exx.f90
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12193 c92efa57-630b-4861-b058-cf58834340f0
US case. Not a priority, given the curret poor performances of hybrid with
USPP: for the time being, I added a check to disable this case
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12190 c92efa57-630b-4861-b058-cf58834340f0