1) no more f_defs.h file to be included in fortran files
2) all CMPLX explicitly defined as CMPLX(...,KIND=dp)
3) blas/lapack names in lowercase (not all of them, actually)
4) documentation accordingly updated (plus unrelated changes to user_guide)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5805 c92efa57-630b-4861-b058-cf58834340f0
for a bug, before I realized that there were two copies of "gamma_only",
I wasted two more hours to iuse a single value of "gamma_only" (the one
oin control_flags).
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4468 c92efa57-630b-4861-b058-cf58834340f0
Now the input of v_of_rho is the charge density in both real and reciprocal
space (always available within the scf loop); the output is unchanged. This
permits to get rid of one FFT for the calculation of V-Hartree and one for the
calculation of V-XC (\nabla rhr in GGA). Array dimensions removed from the list
of arguments of several routines (they are read from the modules). Unused
variables removed.
2) mix_rho has been modified in order to mix only the fourier components of the
smooth part of the density. The FFTs in the local-TF preconditioning are done
using the coarse mesh (cft3s). The performance of the mixing is almost
unchanged, but the mixing itself is much cheaper. Cleanup of unused variables.
Please, check for posible side effects of these modifications.
C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3256 c92efa57-630b-4861-b058-cf58834340f0
conversion to real => DBLE
(including real part of a complex number)
conversion to complex => CMPLX
complex conjugate => CONJG
imaginary part => AIMAG
All functions are uppercase.
CMPLX is preprocessed by f_defs.h and performs an explicit cast:
#define CMPLX(a,b) cmplx(a,b,kind=DP)
This implies that 1) f_defs.h must be included whenever a CMPLX is present,
2) CMPLX should stay in a single line, 3) DP must be defined.
All occurrences of real, float, dreal, dfloat, dconjg, dimag, dcmplx
removed - please do not reintroduce any of them.
Tested only with ifc7 and g95 - beware unintended side effects
Maybe not the best solution (explicit casts everywhere would be better)
but it can be easily changed with a script if the need arises.
The following code might be used to test for possible trouble:
program test_intrinsic
implicit none
integer, parameter :: dp = selected_real_kind(14,200)
real (kind=dp) :: a = 0.123456789012345_dp
real (kind=dp) :: b = 0.987654321098765_dp
complex (kind=dp) :: c = ( 0.123456789012345_dp, 0.987654321098765_dp)
print *, ' A = ', a
print *, ' DBLE(A)= ', DBLE(a)
print *, ' C = ', c
print *, 'CONJG(C)= ', CONJG(c)
print *, 'DBLE(c),AIMAG(C) = ', DBLE(c), AIMAG(c)
print *, 'CMPLX(A,B,kind=dp)= ', CMPLX( a, b, kind=dp)
end program test_intrinsic
Note that CMPLX and REAL without a cast yield single precision numbers on
ifc7 and g95 !!!
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2133 c92efa57-630b-4861-b058-cf58834340f0
that can combine two pseudopotentials in UPF format to
produce a third one (in the same format) for the virtual
atom Vvirt = x * V1 + (1-x) V2 . For the time being it
has only limited functionality as the two pseudos need
to be defined on the same radial grid. (SdG)
- a new utility initial_state.x has been added to PP that
can computed the core level shift in the initial state
approximation... in practice the first order derivative of
the total energy with respect to DeltaV=V(excited)-V(GS).
It is the analogue (via Janak theorem) of the core eigenvalue
in the pseudopotential framework where the core electrons
do not exist.
In the present status it require both V(excited) and V(GS)
to be defined in the preceeding SCF calculation. (SdG)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@1369 c92efa57-630b-4861-b058-cf58834340f0