Commit Graph

1233 Commits

Author SHA1 Message Date
Paolo Giannozzi 5f4bf372b6 make.depend updated 2018-01-19 21:05:07 +01:00
Paolo Giannozzi 6e01664329 Added simple test for pw2bgw.x, courtesy Georgy Samsonidze 2018-01-17 18:41:30 +01:00
Paolo Giannozzi c6fecbada0 Test on dual > 4 made more robust towards roundoff errors (dual might turn
out to be > 4 even when it is supposed to be exactly 4)
2018-01-17 17:31:04 +01:00
Paolo Giannozzi 723dc4ef40 Routine "gradrho" moved to gradutils, with new name "fft_gradient_g2r",
while previous "fft_gradient" becomes "fft_gradient_r2r".
Routine "grad_dot" moved to gradutils, with new name "fft_graddot" and
removal of useless variable in the list of argument.
2018-01-16 22:13:52 +01:00
Paolo Giannozzi 4b235efd9d My old compiler doesn't like format "I" with no length specification 2018-01-16 21:37:16 +01:00
Paolo Giannozzi a6742d1d9c pw2gbw.x should work again, courtesy Georgy Samsonidze 2018-01-16 18:28:21 +01:00
Davide Ceresoli 7d1e4f3c0d Improvement of wfck2r:
- output a subset of wfcs
- output in matlab format
2018-01-16 15:59:31 +01:00
Paolo Giannozzi cc988c0fe2 Functions gradrho and grad_dot made uniform with other similar routined. 2018-01-15 21:41:21 +01:00
Paolo Giannozzi 0c2008497d Hessian also moved to gradutils.f90 and harmonized with the rest.
IMPORTANT NOTICE: there are an external_hessian and an external_gradient
subroutine, different from those in gradutils.f90, in CPV/src/plugin_utils.f90
I think that both versions should work, but cannot test it. Eventually the CP
version must disappear, because it may lead to problems on some picky linkers
2018-01-14 22:26:51 +01:00
Stefano de Gironcoli cd2e99c523 Merge branch 'master' of https://gitlab.com/QEF/q-e
Conflicts:
	PW/src/sum_band.f90
2018-01-10 14:58:38 +01:00
Stefano de Gironcoli 4c4c93c257 define a generic interface for fft_interpolate and move the correspondig routine to FFTXlib 2018-01-08 23:02:08 +01:00
Paolo Giannozzi 9af0317f8d Once again, a problem with modules in Makefiles. In order to simplify things,
after the proliferarion of modules and libraries, I have collected into a
single variable BASEMOD_FLAGS, defined in make.inc, the list of directories
for modules, to be included by all codes. IMPORTANT NOTICE: re-run "configure",
the new Makefiles work in conjunction with the new make.inc
2018-01-08 22:28:48 +01:00
Paolo Giannozzi 4ea5c0bda1 ggen no longer uses variables from module gvect: all g-vector related variables
are passed as arguments. Note that ngm is likely redundant since it is inside
the fft descriptor. Nothing should change apart from the call to ggen
2018-01-05 19:06:07 +01:00
Paolo Giannozzi 4f67392dd5 Second step in G-vector generation reordering: subroutine "ggen" split into
two subroutines: "ggen" takes care of G-vectors for the FFT grid only,
"ggens" takes care of the subgrid only, with exactly the same ordering.
Seems to work, please verify
2018-01-04 11:42:42 +01:00
Paolo Giannozzi 54a1567bfa First attempt to unify the various ggen*: FFT descriptors are taken out from
modules and put in the call of ggen; case with no global sorting simplified
2018-01-03 19:23:22 +01:00
Paolo Giannozzi 70e154e7b1 Merge branch 'master' of https://gitlab.com/QEF/q-e 2018-01-03 08:42:30 +01:00
Stefano de Gironcoli a121f57263 call sequence of fft_interpolate_real and fft_interpolate_complex made equal 2018-01-03 01:13:20 +01:00
Stefano de Gironcoli 72532727af subroutines interpolate and exx_interpolate unified into fft_interpolate_real
syntax changed
2018-01-02 23:42:06 +01:00
Paolo Giannozzi b21f20023f Structure exx_fft deleted. To be done: ggenx and ggent must be merged with ggen. 2018-01-02 22:53:20 +01:00
Stefano de Gironcoli 41e91c0dac new interface to fft calls
three types of calls are possibles :  'Rho', 'Wave', 'tgWave'

   In order to enable an fft-type for a given grid the corresponding clock_labels must be set.
   One gives a name to desc%rho_clock_lable for 'Rho' type fft and a name to
   desc%wave_clock_lable for 'Wave' and 'tgWave' types. Whether tg is
   possible depends of the already defined value of desc%have_task_groups variable (mispell to be corrected soon).

   definining
      dffts%rho_clock_label='ffts', dffts%wave_clock_label='fftw',
      dfftp%rho_clock_label='fft', dfftt%rho_clock_label='fftc' and
      dfftt%wave_clock_label='fftcw'
   and changing
      'Dense'->'Rho', 'Smooth'->'Rho', 'Custom'->'Rho', 'CustomWave'->'Wave'
   the same clock names and the same overall behavior as with the old interface is obtained.
2018-01-02 17:45:45 +01:00
Carlo Cavazzoni b7f0d202dc nl indexes now in fft type 2017-12-24 16:13:57 +01:00
Paolo Giannozzi 8ea3ae7742 The new program open_grid requires a FoX module. Not all compilers complain. 2017-12-16 09:25:27 +01:00
Lorenzo Paulatto (naquite) 21823b8cfd Small change, do not force wf_collect to be false any more 2017-12-12 17:20:38 +01:00
Lorenzo Paulatto (naquite) c89f8642ef Added a small code that can open the grid of k-points by rotating the wavefunctions, whould work for every case in which EXX works, as it resuses part of the EXX subroutines 2017-12-12 17:19:03 +01:00
Paolo Giannozzi 08457673d4 First commit on github! documentation for pw2gw in .def format 2017-12-12 07:11:20 +01:00
giannozz fda42b8045 Added new version of pw2gw with documentation (Olivia Pulci, Davide Grassano,
Adriano Mosca Conte); version number in documentation updated. Maybe ready?


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@14038 c92efa57-630b-4861-b058-cf58834340f0
2017-12-11 10:41:41 +00:00
giannozz 0b2f1f8698 Incorrect factor multiplying Fermi velocity
Proble found by Victor Chang and fixed by Mitsuaki Kawamura


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@14033 c92efa57-630b-4861-b058-cf58834340f0
2017-12-09 17:46:20 +00:00
giannozz 63e02d8760 Option "-in file" for fermi_proj.x and fermi_velocity.x was not working in
serial execution. Added comment explaining that mp_startup reads the command 
line. Example fermisurfer_example/ was cited in the doc but was missing.


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13986 c92efa57-630b-4861-b058-cf58834340f0
2017-11-10 15:05:24 +00:00
giannozz 6c45539bb4 Misc spelling errors
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13957 c92efa57-630b-4861-b058-cf58834340f0
2017-10-25 20:08:57 +00:00
giannozz 193eca47d1 Guess labels for atomic states if not found in UPF file (may happen
with files produced by ATOMPAW)


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13901 c92efa57-630b-4861-b058-cf58834340f0
2017-10-12 07:27:21 +00:00
giannozz eb25b063cb Reference to QE paper moved to a single file
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13884 c92efa57-630b-4861-b058-cf58834340f0
2017-09-28 12:14:17 +00:00
dalcorso 99ca240b78 Bug fix: a partially not initialized variable could give problems
in the noncollinear symmetry analysis of the bands if the compiler 
initializes it to NaN.


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13871 c92efa57-630b-4861-b058-cf58834340f0
2017-09-26 13:06:37 +00:00
giannozz 00970447e8 Version number moved to 6.2, with caveat that documentation is only
partially up to date


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13852 c92efa57-630b-4861-b058-cf58834340f0
2017-09-24 20:17:34 +00:00
giannozz 326374056b Removal of too long lines (Pietro B.) and of tabulators
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13841 c92efa57-630b-4861-b058-cf58834340f0
2017-09-14 15:13:08 +00:00
giannozz 3158fd4c65 DFPT + tetrahedra, bug fixes:
* PHonon/PH/prepare_q.f90
  dfpt_tetra_linit should be initialized here for the multi-q
  computation including Gamma point.
* PP/src/fermisurfer_common.f90
  The routine computing equivalent k-points was incorrect for
  body/face/base-centered lattice with nk1/=nk2/=nk3.
Extensions:
* Electron-phonon + tetrahedra works with q2r.x
* matdyn.f90 computes also \omega_ln
(Mitsuaki Kawamura)


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13806 c92efa57-630b-4861-b058-cf58834340f0
2017-08-30 14:42:22 +00:00
degironc 3e6b4f8e76 MAJOR restructuring of the FFTXlib library
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
2017-08-01 20:31:02 +00:00
giannozz 9cd88c5e98 Incorrect format could cause crash in projwfc in parallel execution
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13675 c92efa57-630b-4861-b058-cf58834340f0
2017-08-01 18:08:23 +00:00
degironc 4636bca635 KS_Solvers directory has been created with three subdirectories:
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
2017-07-29 12:19:19 +00:00
giannozz b3bc955a3c All *.o must be present in a library, even those not referenced outside the
library, otherwise  some compilers, notably pgi, may not be able to find them


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13634 c92efa57-630b-4861-b058-cf58834340f0
2017-07-27 20:29:08 +00:00
giannozz 322baa015d Re-installed some minor changes to C and timing functions, aimed towards
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
2017-07-27 17:26:36 +00:00
degironc 7fd27ba0ad UtilXlib directory created to contain a library (libutil.a) for
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
2017-07-26 11:15:20 +00:00
degironc e1d6b18de9 more changes at the smmothing of beta- and q-funcions
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
2017-07-15 23:16:18 +00:00
giannozz 2d49df4bd4 More cleanup with timing routines, see Doc/release-notes for explanations
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13603 c92efa57-630b-4861-b058-cf58834340f0
2017-07-15 20:33:50 +00:00
giannozz f3be636b49 c functions cclock and scnds called via iso_c_binding
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13601 c92efa57-630b-4861-b058-cf58834340f0
2017-07-15 15:34:01 +00:00
giannozz 5acef89f56 make.depend updated
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13582 c92efa57-630b-4861-b058-cf58834340f0
2017-06-30 08:43:06 +00:00
giannozz d277383654 Oops...
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13564 c92efa57-630b-4861-b058-cf58834340f0
2017-06-10 07:08:29 +00:00
giannozz b6668b9ced Routine xk_pool is a duplicate of another routine, "local_kpoint_index".
Should work as before but I didn't test it


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13563 c92efa57-630b-4861-b058-cf58834340f0
2017-06-10 07:05:44 +00:00
dalcorso cbc3f9576d Bug fix: problem plotting the magnetization densities with pools
(Bug signaled by A. Urru).


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13560 c92efa57-630b-4861-b058-cf58834340f0
2017-06-09 16:32:36 +00:00
giannozz cb6ee9777b Example for Work Function updated to reflect new format of average.x
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13549 c92efa57-630b-4861-b058-cf58834340f0
2017-06-06 16:50:44 +00:00
giannozz 4aa0376b0f Some improvements (?) to documentation and coding of "average.x"
Some minor fixes (misspells etc.)


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13540 c92efa57-630b-4861-b058-cf58834340f0
2017-06-01 08:25:32 +00:00