when tq_smoothing is true. previously, the unsmoothed fourier/back-fourier transfmomed
functions where erroneously copied into qfuncl.
tqr=.true. and .false. give now very similar results when smoothing is applied.
And smoothing is adjusted so as to do the least necessary to acheive this.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13683 c92efa57-630b-4861-b058-cf58834340f0
In real space processors are organized in a 2D pattern.
Each processor owns data from a sub-set of Z-planes and a sub-set of Y-planes.
In reciprocal space each processor owns Z-columns that belong to a sub set of
X-values. This allows to split the processors in two sets for communication
in the YZ and XY planes.
In alternative, if the situation allows for it, a task group paralelization is used
(with ntg=nyfft) where complete XY planes of ntg wavefunctions are collected and Fourier
trasnformed in G space by different task-groups. This is preferable to the Z-proc + Y-proc
paralleization if task group can be used because a smaller number of larger ammounts of
data are transferred. Hence three types of fft are implemented:
!
!! ... isgn = +-1 : parallel 3d fft for rho and for the potential
!
!! ... isgn = +-2 : parallel 3d fft for wavefunctions
!
!! ... isgn = +-3 : parallel 3d fft for wavefunctions with task group
!
!! ... isgn = + : G-space to R-space, output = \sum_G f(G)exp(+iG*R)
!! ... fft along z using pencils (cft_1z)
!! ... transpose across nodes (fft_scatter_yz)
!! ... fft along y using pencils (cft_1y)
!! ... transpose across nodes (fft_scatter_xy)
!! ... fft along x using pencils (cft_1x)
!
!! ... isgn = - : R-space to G-space, output = \int_R f(R)exp(-iG*R)/Omega
!! ... fft along x using pencils (cft_1x)
!! ... transpose across nodes (fft_scatter_xy)
!! ... fft along y using pencils (cft_1y)
!! ... transpose across nodes (fft_scatter_yz)
!! ... fft along z using pencils (cft_1z)
!
! If task_group_fft_is_active the FFT acts on a number of wfcs equal to
! dfft%nproc2, the number of Y-sections in which a plane is divided.
! Data are reshuffled by the fft_scatter_tg routine so that each of the
! dfft%nproc2 subgroups (made by dfft%nproc3 procs) deals with whole planes
! of a single wavefunciton.
!
fft_type module heavily modified, a number of variables renamed with more intuitive names
(at least to me), a number of more variables introduced for the Y-proc parallelization.
Task_group module made void. task_group management is now reduced to the logical component
fft_desc%have_task_groups of fft_type_descriptor type variable fft_desc.
In term of interfaces, the 'easy' calling sequences are
SUBROUTINE invfft/fwfft( grid_type, f, dfft, howmany )
!! where:
!!
!! **grid_type = 'Dense'** :
!! inverse/direct fourier transform of potentials and charge density f
!! on the dense grid (dfftp). On output, f is overwritten
!!
!! **grid_type = 'Smooth'** :
!! inverse/direct fourier transform of potentials and charge density f
!! on the smooth grid (dffts). On output, f is overwritten
!!
!! **grid_type = 'Wave'** :
!! inverse/direct fourier transform of wave functions f
!! on the smooth grid (dffts). On output, f is overwritten
!!
!! **grid_type = 'tgWave'** :
!! inverse/direct fourier transform of wave functions f with task group
!! on the smooth grid (dffts). On output, f is overwritten
!!
!! **grid_type = 'Custom'** :
!! inverse/direct fourier transform of potentials and charge density f
!! on a custom grid (dfft_exx). On output, f is overwritten
!!
!! **grid_type = 'CustomWave'** :
!! inverse/direct fourier transform of wave functions f
!! on a custom grid (dfft_exx). On output, f is overwritten
!!
!! **dfft = FFT descriptor**, IMPORTANT NOTICE: grid is specified only by dfft.
!! No check is performed on the correspondence between dfft and grid_type.
!! grid_type is now used only to distinguish cases 'Wave' / 'CustomWave'
!! from all other cases
Many more files modified.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13676 c92efa57-630b-4861-b058-cf58834340f0
KS_Solvers/CG, KS_Solvers/Davidson, KS_Solvers/Davidson_RCI.
Two are currently used by QE, the third one implements the Davidson
diagonalization within the Reverse Communication Interface paradigm,
courtesy of Micael Oliveira.
KS_Solvers routines depend only on lower level libraries, notably UtilXlib,
LAXlib, (SCA)LAPACK, and BLAS.
reorganization can be improved. For instance some duplicated routines like
cdiaghg and rdiaghg could/should be moved in LAXlib. This could reduce the need
to include KS_Solvers directories in the link step of many codes.
Minimal changes to calling sequence have been made, essentially just adding
h_psi,s_psi,g_psi and h_1psi,s_1psi routines names as arguments (with a
specific calling sequence ihardcode inside the routines that agree with PWSCF one).
This could be avoided adopting the RCI paradigm.
Compiled in serial and parallel, 177/182 pw tests passed (3 that were failing
even before on my laptop pw-berry, pw-langevin, pw-pawatom + 2 unknown==not tested),
12 /17 cp tests passed (some o2-us-para-pbe-X fail but the same was for the
original version)
I assume the modified calling procedure is working and the problem lies somewhere else.
Randomly tested some examples in pw, ph, pwcond and it seams to work.
Please report any problem.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13644 c92efa57-630b-4861-b058-cf58834340f0
that the F77_FUNC trick was used also in FFTXlib/fftw.c. Now it is removed for
good. There is a new file of interfaces. In case of a strange behavior with
FFTW, this is for sure the culprint.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13642 c92efa57-630b-4861-b058-cf58834340f0
removal of old-style fortran to C binding and of configure hacks. The
fortran timing functions are now f_tcpu and f_wall, with obvious meaning
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13631 c92efa57-630b-4861-b058-cf58834340f0
basic operations: error handling, timing clocks, interfaces to basic mpi
calls, find free units...
These routines are moved from Modules and dependencies to other modules
are removed.
MANY files are updated to comply with the move.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13629 c92efa57-630b-4861-b058-cf58834340f0
number of optimization steps is printed only for relaxations and md;
for nscf calculations the n_scf_steps field is set to 1 instead of 0.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13614 c92efa57-630b-4861-b058-cf58834340f0
BEWARE if npol is included from a module at the top of the routine
and is declared again after a CONTAINS section... the compiled does
not complain and the unitialized value of npol is used !
I think it should be considered a compiler bug.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13608 c92efa57-630b-4861-b058-cf58834340f0
US variable qq renamed qq_nt and a new variable qq_na added
because in real space the integral may depend (slightly) on
the atomic position and an atomic value is needed to compute
exactly normalizable wfc.
Whenever realspace tricks are not used qq_nt is used.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13604 c92efa57-630b-4861-b058-cf58834340f0
are used when realspace=.true. or tqr=.true. is modified so that it works correctly
even when the spheres spill out of the wigner seitz cell.
For sufficiently large cells it makes no difference but for some monoatomic crystal
structures the sphere was incorrectly trimmed.
The execution time should improve for large cells as only a limited region of space
around each atom is examined.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13588 c92efa57-630b-4861-b058-cf58834340f0
pw.x and cp.x and no longer by any postprocessor codes. Any attempt to use its
contents will trigger an error. "output_tau" now checks that it is allocated.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13570 c92efa57-630b-4861-b058-cf58834340f0
pools and band groups (not sure with both, but this doesn't happen now).
To be dobe for read_wfc and read_rhog as well.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13567 c92efa57-630b-4861-b058-cf58834340f0
subroutine and closer to routine "latgen" performing the opposite operation.
NOTE: postprocessing codes that use ibrav and celldm, shouldn't!
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13555 c92efa57-630b-4861-b058-cf58834340f0
Added a check to avoid that real-space loops operate on non-physical gridpoints
which are only there to speed up specific flavors of FFTS. Apparently no
effects on machines with standard FFTS (all pw tests passed), but can't verify
the actual case where the bug may occur.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13538 c92efa57-630b-4861-b058-cf58834340f0
ggradient, originally developed for Environ, was in fact a
perfect copy of hessian: removed it together with its external
interface. Replaced the only non-Environ call to external_ggradient
by a call to external_hessian, passed the pw_xdm test.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13537 c92efa57-630b-4861-b058-cf58834340f0
indices, this allows to reconstruct k+G vectors without any information from
other files. Memory usage optimiation: the large arrays needed to collect data
are allocated only on the processor(s) performing actual I/O.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13525 c92efa57-630b-4861-b058-cf58834340f0
one has the (almost) full information on wavefunctions in a single file.
'gkvect.dat' files deleted from new format.
NOTE: the new format is incompatible with both the old one and with previous
versions of the new one, and this is not yet the final version.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13520 c92efa57-630b-4861-b058-cf58834340f0
still a few exotic cases in which the charge density is written and read in
real space, though, that will be dealt with in due time. In order to minimize
the amount of changes, the charge density is converted to real space, thus
wastin some FFTs. To be fixed when the old format is removed.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13517 c92efa57-630b-4861-b058-cf58834340f0
from generic one. read/write_rho => read/write_scf for structure rho.
read/write_rho_only => read/write_only, moved to Modules/xml_io_base.f90.
Nothing substantial, but beware side effects
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13502 c92efa57-630b-4861-b058-cf58834340f0
IMPORTANT NOTE: in LSDA nbnd is the sum of up and down nbnd, as it should be,
so it must be divided by 2 in PW when it is read from file
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13499 c92efa57-630b-4861-b058-cf58834340f0