computing symmetries into a separate routine called after the first one.
Everything should work exactly the same as before. This is just a preliminary
step towards automatic parallelization. Next step: force the FFT grids to be
commensurate with symmetries and not vice versa.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13265 c92efa57-630b-4861-b058-cf58834340f0
- old routine computing dos, allocation and deallocation of "tetra" moved into
module ktetra; variables tetra and ntetra are used only inside the module
- added module variable nntetra containing number of neighboring points used
(20 for optimized tetrahedra, 4 otherwise)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13228 c92efa57-630b-4861-b058-cf58834340f0
output arrays coincide breaks phonons with optimized tetrahedra in serial case.
Now fixed, but I would like to be sure that an operation "f_in=f_out" is
properly executed also when f_in and f_out are the same in memory
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13227 c92efa57-630b-4861-b058-cf58834340f0
Variable "ltetra" moved to common "klist" together with all other variables
setting occupations. All make.depend updated. Should be harmless.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13204 c92efa57-630b-4861-b058-cf58834340f0
1. incorporating the patch of Ikutaro Hamada to correctly handle atomic-positions in crystal coordinates
2. supporting the CELL_PARAMETERS angstroms|bohr options
3. ibrav=0 with "A" spec didn't work well (fixing)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13197 c92efa57-630b-4861-b058-cf58834340f0
Now the information read on restart or by any program using the read_file routine
are taken only from the output element.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13154 c92efa57-630b-4861-b058-cf58834340f0
Now everything seems to work quite reliably, a few calculation with PAW on molecules where successful, however:
there is still a nasty bug that cause wrong results (usually in the form of S matrix not positive, or wrong charge) when ALL this coditions are met:
1. PAW and/or US
2. using Gygi-Baldereschi divergence threatment with x_gamma_extrapolation
3. K_POINTS gamma
I hope to fix it soonish
LP
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13139 c92efa57-630b-4861-b058-cf58834340f0
Notably: the change of the PAW contribution has been changed, this ensures that the energy computed with exxenergy and exxenergy2 are consistent, also when using a sufficiently large cell (or sufficiently good exxdiv_treatment), with spin and a PAW pseudo you can get exactly one Rydberg energy for the Hydrogen atom!
have also changed electrons.f90 again, and I think it is now satisfactory: during each sub-scf cycle the total energy is printed (but not its components) and you even get the "!" at the end, but at the very final end of the EXX cycle you get a double "!!" at the beginning of the line, which makes grepping less painful.
A few things still missing, to be done sonner or later:
1. US/PAW + noncolinear spin does not work at the moment, because I have not implemented the rotation of the noncolinear <beta|psi> coefficients (this is probably trivial)
2. stress and forces need to be tested
3. stress needs to be tested (it is not implemented with pools either)
I have not really tested band parallelisation.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13136 c92efa57-630b-4861-b058-cf58834340f0
useful in general and in other cases. There are stull cases in which the
HOMO and LUMO are not properly computed, though, especially in LSDA cases
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13135 c92efa57-630b-4861-b058-cf58834340f0
Also, compute_becxx moved to us_exx to try to keep exx.f90 less crowded
A modified version of the old compute_becxx that actually work is stored at the end of us_exx for debugging, I'll remove it later when the code has settled a bit (it is not compiled)
Another related bug, where the rotation of <beta|psi> was not correct when k+q = -k' has been fixed
Quite a few debug lines are left (commented) in the code for good luck, I'll remove them later
Note that all the test suite reference files including US and EXX should be recomputed
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13128 c92efa57-630b-4861-b058-cf58834340f0
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