needs five interegers to be fully defined (all the back-compatibility
has been respected).
Added drivers and functions to implement new non-local functionals.
Added the vdw-DF2 (to test).
Fixed how shortnames are handled in input (funct.f90)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@7706 c92efa57-630b-4861-b058-cf58834340f0
CMPLX is explicitly typed, blas/lapack are lowercase (consistently with
the convention: FORTRAN COMMANDS = uppercase, all the rest lowercase)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5789 c92efa57-630b-4861-b058-cf58834340f0
LP
UPF file format updated completely, UPFv2 introduced:
* ld1.x can still produce old format, with the switch upf_v1_format=.true. in inputp
this is disabled by default, but we can discuss if it should be the opposite.
* pw.x cp.x and all utilities should notice no difference
* some utilities in upftools still need to be updated, anyway conversion UPFv1 to UPFv2
is very easy, so this should be no big issue
* starting from now to produce an UPF file you need to fill the pseudo_upf derivedd type
and feed it to write_upf woutine in upf_module (Modules/upf.f90)
* extensive use of iotk
I have tried to make the new format as self contained as possible, e.g. there should be
minimal need for post-processing after the data is read, no more reconstruction of known
quantities, and no more odd syntax to save negligible quantity of space. Also the human
readable section is a bit richer, all the rest is more machine readable.
I hope this will not cause any throuble, and tried really hard to, all examples and all
tests works as fine as before and gives (what really looks like) the same results.
Other changes that I needed to make:
* radial grids are now allocatable, they management is a bit less of a hack too
* paw and uspp augmentation are stored in the same place
* paw print total all-electron energy if all atoms are paw, not very useful, but nice
* most of the pseudopotential-writing reading files have been renamed to some more
logical name, I spare you the list. E.g. read_oldpseudo -> read_pseudo_rrkj3
* paw_t derived type was only used in atomic, so I have put it there (as the pseudo_type
module take ages to recompile it was awkward to leave it there).
PAW tests inserted in test/ there are 6 of them, as a consequence I have also put 5 paw
pseudopotentials in the pseudo/ directory.
I will update the PAW scf examples soon, by deleting them (as running a pw with a PAW
pseudopotential requires no option at all). PAW generation examples should be updated.
A lot of small bugfixes here & there mostly uninitialized variables or unallocated
pointers used as subrotuine arguments.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4769 c92efa57-630b-4861-b058-cf58834340f0
initialized when a non-UPF pseudopotential was read. On most machines
it defaults to 0, i.e. .false., that is good, but sometimes it doesn't
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4627 c92efa57-630b-4861-b058-cf58834340f0
zp, psd, dion, betar, jjj, qqq, qfunc, qfcoef, vloc_at, rinner,
nbeta, kkbeta, nqf, nqlc, lll, tvanp
have been replaced by the corresponding variables in structure 'upf'.
There shouldn't be any side effects, but who knows. There is still a
copy of the above variables that will be removed sooner or later.
Basically : variable([i,j,k,..,]n) => upf(n)%variable [(i,j,k,..)]
Note that upf%qfunc has for the time being three indices instead of two,
and that upf%kkbeta is the analogous of kkbeta and not what it used to be.
The logic of this operation will be clearer when it will be completed
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4308 c92efa57-630b-4861-b058-cf58834340f0
then copied into the internal modules. This is a first step towards
1) elimination of fixed-dimension atomic pseudopotential arrays,
2) reduction of memory usage by pseudopotentials,
3) cleanup of the pseudopotential mess.
Next steps: 1) the same in CP, 2) replacement of variables in "uspp"
module with an array of "upf" structures.
Beware: calculations using old formats should work as before, but
don't count on it
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4299 c92efa57-630b-4861-b058-cf58834340f0
Please do not re-introduce old-style syntax. A uniform syntax allows
if the need arises to change the precision in less than no time.
Courtesy of Pascal Thibeaudeau. Modules/ directory only.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3964 c92efa57-630b-4861-b058-cf58834340f0
PAW-related stuff extracted and put into the paw module; various checks
moved to more appropriate places; initialization of obsolete variables
lloc and lmax moved elsewhere; variable zp moved to uspp_param.
All PP-reading subroutines (too many) read zp, not zv; zv is set later.
Summary for pseudopotentials unified and purged of printout of
obsolete/unused/unset variables.
PW/readin.f90 renamed to something more suggestive of what it does
(PW/read_pseudo.f90). Module PW/upf_to_internal.f90 moved to Modules/,
routine upf2internal removed from CPV/read_pseudo.f90.
Harmless error in berry phase + a few bad formats in GIPAW fixed.
Dependencies and Makefiles updated.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3851 c92efa57-630b-4861-b058-cf58834340f0
- correct an unquoted string (iosys) in PW/input.f90:483
(this was the cause of tonight compilation failere)
- correct a few incorrect format strings
- make more use of the constants module and thus
provide more consistent units. NOTE, this has some
numerical changes in the outputs, as in some places
rather low precision and inconsistent numbers were
used for unit conversion.
- convert all(?) single precision constants to double
using the attached little perl program.
exceptions: efermi.f90 (as it is supposed to be rewritten
anyways), plotbands.f90 (it uses single precision everywhere,
which may result in saving a significant amount of memory,
so i converted the two double precision constants to single).
Unused routine 'set_fft_grid' removed
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3602 c92efa57-630b-4861-b058-cf58834340f0
Ultrasoft PPs, merged into a single index. The logic of the index
should be the same as for the other USPP_related variables. Tested
for UPF format, should work for old van and rrkjus formats as well,
but I haven't tested it (tests very welcome).
Why? with default static dimensions, qfunc took 40Mb. Some compilers
(e.g. g95) store a copy of statically dimensioned arrays in objects
and executables, so 'make all' produced *.x for 1Gb or so ...
Apart from this, wasting nonscalable memory should be avoided anyway
in massively parallel machines.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3506 c92efa57-630b-4861-b058-cf58834340f0
- the logic of the combined index for US PP is now the same everywhere
(i.e in PW, CP, and in the pseudopotential format):
do iv=1,N
do jv=iv,N
ijv=jv*(jv-1)/2+iv
(in PW the indices are called nb, mb). In order to get ijv from (iv,jv):
if (iv > jv) then
ijv=iv*(iv-1)/2+jv
else
ijv=jv*(jv-1)/2+iv
end if
- the above change also fixes a serious bug affecting Vanderbilt US PP
in UPF format (only half of the qfcoef array was present, but not the
good half)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2916 c92efa57-630b-4861-b058-cf58834340f0