of the file was not returning an error code in cases where it should have,
resulting in segmentation fault (ifort compiler only)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5759 c92efa57-630b-4861-b058-cf58834340f0
modules is provided by the Makefile in each subdirectory, rather than
by make.sys. No big advantage but neater solution than before
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5737 c92efa57-630b-4861-b058-cf58834340f0
by external libraries (e.g. recent ESSL). In order to prevent such problems,
erf has been renamed qe_erf and erfc qe_erfc
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5644 c92efa57-630b-4861-b058-cf58834340f0
- Logic now changed, variables are nullified as soon as they are
instantiated. radial_grid rgrid made allocatable
- all tests passed with ifort. xlf, pgi, gfortran will follow
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4838 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
Modules/error_handler.f90 . Not really an elegant solution, since
the module in error_handler is never used and subroutine "errore"
is not in the module, but better than it used to be. All makefiles
and make.depend updated (fixes yesterday's linking error as well).
Minor changes here and there as well.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4591 c92efa57-630b-4861-b058-cf58834340f0
like in it was in reduce sub of PW. This is to avoid large temporary
array allocations in module mp.f90 (mp.f90 calls subs in mp_base.f90).
On the other hands mp.f90 provide the general interfaces for different
kind of data and data size checking.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4441 c92efa57-630b-4861-b058-cf58834340f0
as a consequence very old FPMD pseudopotential files are no more
supported, they need to be converted with fpmd2upf.x upf tool.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4312 c92efa57-630b-4861-b058-cf58834340f0
This means that a lot of routines have been modified and a few files have
been added. During the year several people have contributed to this code,
mainly Guido Fratesi, Ricardo Mazzarello, Stefano de Gironcoli, Andrea Dal
Corso and me (Lorenzo Paulatto).
A brief report of modified or added files follows, further down you will
find a loger report of modifications that was necessary to merge develop_PAW
branch with the current CVS version.
Current version is not 100% functional, but it doesn't brake anything else and
can be used to generate and test PAW pseudopotential.
*************************************
*** Brief report of modifications ***
*************************************
Modified files:
PW/clean_pw.f90
PW/electrons.f90
PW/print_clock_pw.f90
PW/hinit0.f90
PW/potinit.f90
PW/newd.f90
PW/summary.f90
PW/setup.f90
PW/read_pseudo.f90
PW/init_us_1.f90
PW/init_run.f90
PW/mix_rho.f90
atomic/atomic_paw.f90
atomic/write_paw_recon.f90
atomic/ld1_writeout.f90
atomic/write_resultsps.f90
atomic/ld1inc.f90
atomic/ld1_readin.f90
atomic/gener_pseudo.f90
atomic/parameters.f900
atomic/run_pseudo.f900
atomic/set_rho_core.f90
atomic/pseudovloc.f90
Modules/read_upf.f90
Modules/uspp.f90
Modules/pseudo_types.f90
Modules/parameters.f90
Added files:
PW/grid_paw_routines.f90
PW/rad_paw_routines.f90
Modules/grid_paw_variables.f90
Modules/read_paw.f90
Added files that will be removed:
PW/rad_paw_trash.f90
PW/paw_xc.f90
Examples:
examples/PAWexample contains a full test of PAW pseudopotential
for Oxygen. The test consist in these tasks:
- 2 norm conserving, 2 US and 4 PAW pseudopotentials are
generated and tested in ld1
- pw test for an isolated O atom at different cutoffs
- pw test for an O2 molecule at different O-O distance
please read examples/PAWexample/README for (a few) details.
NOTES:
1. new modifications to atomic_paw (and related) from ADC have been rolled
back, as they were breaking a lot of things, I will reintroduce them
later when I am sure that everything works properly.
2. the files PW/paw_xc.f90 and Modules/rad_paw_trash.f90 will be removed in
the next few weeks.
TODO:
1. use new ld1 XC code as much as possible, and remove legacy XC routines
from rad_paw_routines
2. full self-consistency with radial energies
3. make new Harris-Foulkes estimate paw-aware
4. provide some kind error estimate
5. FORCES and stress!! (require symmetrization of becsums)
6. cleanup
************************
*** merge of PW code ***
************************
Versions notation:
OLD=version from 2 years ago used as reference to generate the patches
NEW=CURRENT=current trunk version
PAW=current develop_PAW version
Note: pseudo-potential input and allocation routines changed
a lot in the last years, this is a diagram:
OLD:PW/readin ~~> PAW:PW/read_pseudo --> disappears
pops out --> PAW:PW/readin ~~> NEW:PW/read_pseudo
added files:
Modules/read_paw.f90 (contains module read_paw_module with subroutines
paw_io nullify_pseudo_paw, allocate_pseudo_paw and
deallocate_pseudo_paw previously in removed file
Modules/readpseudo.f90. Also contains module
paw_to_internal with subroutine set_pseudo_paw,
previously in upf_to_internal.f90)
PW/paw_xc.f90 (contains OLD=PAW xc and gcxc routines as adapting paw
grid code to use new routines was very error prone and
quite worthless, as it has to be removed anyway)
Conflicts reported by CVS during merge:
DONE */Makefiles (all replaced with new, redone by hand)
DONE flib/functionals.f90 (nothing to do)
DONE Modules/functionals.f90 (RNV == replaced with NEW version)
DONE Modules/atom.f90 (trivial: duped rgrid)
DONE Modules/autopilot.f90 (trivial)
DONE Modules/bfgs_module.f90 (RNV)
DONE Modules/cell_base.f90 (RNV)
DONE Modules/check_stop.f90 (RNV)
DONE Modules/constants.f90 (RNV)
DONE Modules/constraints_module.f90 (RNV)
DONE Modules/energies.f90 (RNV)
DONE Modules/input_parameters.f90 (RNV)
DONE Modules/ions_base.f90 (RNV, has 3 new subs)
DONE Modules/ions_nose.f90 (RNV)
DONE Modules/parameters.f90 (actually RNV)
DONE Modules/path_base.f90 (RNV)
DONE Modules/path_opt_routines.f90 (RNV)
DONE Modules/path_reparametrisation.f90 (RNV)
DONE Modules/path_variables.f90 (RNV)
DONE Modules/pseudo_types.f90 (cleaned double def of paw_t)
DONE Modules/read_cards.f90 (RNV)
DONE Modules/read_namelists.f90 (checked and RNV)
DONE Modules/uspp.f90 (trivial)
DONE Modules/xml_io_base.f90 (RNV)
DONE PW/read_pseudo.f90 (merged by hand with PAW PW/readin)
DONE PW/bp_calc_btq.f90 (trivial)
DONE PW/c_bands.f90 (actually RNV)
DONE PW/ccgdiagg.f90 (RNV)
DONE PW/cegterg.f90 (RNV)
DONE PW/cft3s.f90 (RNV)
DONE PW/cinitcgg.f90 (RNV)
DONE PW/c_phase_field.f90 (RNV)
DONE PW/divide_et_impera.f90 (nothing to do?)
DONE PW/exx.f90 (RNV)
DONE PW/hinit0.f90 (easy)
DONE PW/h_psi.f90 (RNV)
DONE PW/init_run.f90 (easy)
DONE PW/kpoint_grid.f90 (nothing to do?)
DONE PW/newd.f90 (required mod in newd_paw_grid, CHECK!!)
DONE PW/openfil.f90 (actually RNV)
DONE PW/paw.f90 (actually RNV)
DONE PW/punch.f90 (RNV)
DONE PW/pwscf.f90 (quite RNV)
DONE PW/set_kup_and_kdw.f90 (RNV)
DONE PW/setup.f90 (RNV + 2 line merged by hand)
DONE PW/sgama.f9 (actually RNV)
DONE PW/sgam_at_mag.f90 (actually RNV)
DONE PW/stop_run.f90 (actually RNV)
DONE PW/stres_gradcorr.f90 (actually RNV)
DONE PW/symrho_mag.f90 (nothing to do)
DONE PW/v_of_rho.f90 (RNV)
DONE PW/compute_fes_grads.f90 (RNV)
DONE PW/gradcorr.f90 (RNV)
DONE PW/input.f90 (RNV)
DONE PW/pw_restart.f90 (RNV)
DONE PW/read_ncpp.f90 (actually RNV)
DONE PW/summary.f90 (RNV + inserted new PP type)
DONE PW/wfcinit.f90 (RNV)
the hard ones:
DONE PW/electrons.f90 (adapted code to new syntaxes, a lot of cleanup, removed
some PAW junk that can be readded later, removed parts
that were applyed twice, or had been removed in trunk,
the rhog allocations and usage may need fixes)
DONE PW/mix_rho.f90 (merged tauk and paw additions, a bit of cleanup and smarter
variables names)
DONE PW/init_us_1.f90 (qtot redefined with "triangular" index nb,mb-->ijv)
modified for compiling:
Modules/io_files.f90 (depatched)
PW/pwcom.f90 (depatched)
Modules/parameters.f90 (temporary readded cp_lmax = lmaxx+1)
PW/newd.f90 (merge was wrong, redone mostly by hand)
PW/read_ncpp.f90 (depatched)
PW/read_pseudo (small fixes)
PW/sgam_at_mag.f90 (depatched)
PW/sgama.f90 (depatched)
PW/stres_gradcorr.f90 (depatched)
modified for running:
PW/clean_pw.f90 (added call to deallocate_paw_internals)
Modifications to PAW routines:
1. compute_onecenter_charges and compute_onecenter_charges modified to
comply with new structure of v_xc (in v_of_rho.f90), requiring new
g-space densities to be saved and computed --> using old xc routines
as this code will be removed.
2. qrad size has changed, prad and ptrad had to be changed accordingly.
3. several minor modifications to use new radial grid structure.
4. infomsg arguments changed, very funny bug followed.
5. added new routine deallocate_paw_internals, called by PW/clean_pw.f90
required to run pp.x with more than one q-point(and good programming
practice)
*************************
*** merge of LD1 code ***
*************************
2nd try: atomic code replaced with current version, then merge by hand
the files that are used by paw subsystem:
* atomic_paw.f90 (replaced with most recent version from develop_PAW
routine us2paw and paw2us taken from newer trunk
version, a lot of minor changes.)
* gener_pseudo.f90 (fixes)
* ld1inc.f90 (PAW variables added)
* ld1_readin.f90 (PAW variables added, I am not sure if lpaw should go
in input or inputp namelist)
* ld1_writeout.f90 (it was only necessary to add a few lines)
* pseudovloc.f90 (nothing to do)
* run_pseudo.f90 (almost nothing to do)
* set_rho_core.f90 (readded a few lines for lnc2paw)
* write_paw_recon.f90 (nothing to do)
* write_resultsps.f90 (nothing to do: trunk version is more
PAW-aware than PAW version)
Main problems were found in subroutines run_pseudo and gen_pseudo,
a little code had to be rewritten to comply with new variable names
and fix with merge.
TODO: fix atomic_paw routines to use minimal allocated arrays insetad
of ndmx sized ones; try to use the pawet as much as possible. Remove
test lines and other garbage. Find a fix for PAW2.
The first week of september Andrea Dal Corso uploaded a few modifications to
the atomic_paw routines. I had to rollback them as the structure of atomic_paw
has changed a lot and reimplementing them is probably easier and definitely
safer than fixing everything. I will do it soon, I swear!
LP
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4257 c92efa57-630b-4861-b058-cf58834340f0
ev.x writes the lattice constants in a.u. and in Angstrom.
read_upf_tofile.x writes on file the core charge multiplied by 4 pi r^2
as the valence charge.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4209 c92efa57-630b-4861-b058-cf58834340f0
LD used instead of MPIF90 in Makefiles for loading. Since LD is used
anyway in iotk, it makes sense to use it. In some cases it may be
useful to have distinct options for compiling and for loading.
Minor cleanup in some routines
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3976 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
- workaround for gfortran (it is sort of working)
- single precision constants promoted to double precision
- dfloat-> DBLE
- DIMAG ->AIMAG
- DCMPLX->CMPLX
Note that ALL calls to dfloat, dimag, dcmplx have been added recently,
since I removed all of them no more than a few months ago
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3586 c92efa57-630b-4861-b058-cf58834340f0
make.depend are now in the CVS and shouldn't be updated unless
needed. Configure no longer runs makedeps.sh. Type 'make depend'
to regenerate dependencies.
Remove all */make.depend files before updating!
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3409 c92efa57-630b-4861-b058-cf58834340f0
The idea is that module funct contains data defining the DFT functional in use
and a number of functions and subroutines to manage them.
Data are PRIVATE and are (shuold be) accessed and set only by function calls.
Basic drivers to compute XC quantities are also included.
It should be the main place where definitions for and calculation of xc
functionals are centralized.
In CPV printout [A.U.] replaced by [HARTREE A.U.] in many places.
stefano
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2411 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
- iotk_scan in iotk_module had a mixed up 'intent' statement.
- sun ultra fire 3 compiler warnings
- cleanup in filename length (brought to 256)
- cleanup in include files
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@1399 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
1) f_defs.h for definitions to be included in FORTRAN files ONLY
2) c_defs.h for definitions to be included in C files ONLY
C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@1012 c92efa57-630b-4861-b058-cf58834340f0
Note that lqx => lmaxq for consistency with other names
(those ending in x are static dimensioning)
Beware unexpected side effects (PG)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@933 c92efa57-630b-4861-b058-cf58834340f0
PW: nqfm => nqfx, some us variables and aainit moved to Modules/uspp.f90 (new)
CP: lx, lqx => lqmax, lix => lmaxx+1, variables moved, aainit not yet merged
invmat moved to flib/ and merged with invmat3 of CP/FPMD,
rndm and ylmr2 moved to flib/ in rranf.f90
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@793 c92efa57-630b-4861-b058-cf58834340f0
is given as a,b,c,cos(ab),cos(ac),cos(bc) instead of celldm(:)
upftools/cpmd2upf.f90: wrong conversion due to Rydberg-Hartree mess
Minor cleanup. Band plotting may output data in xmgr-readable format
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@327 c92efa57-630b-4861-b058-cf58834340f0
last fixatom atoms (with the same input procedure as the bfgs
minimization).
- LDA+U part has been modified in order run also in the not
spin-polarized case (some testing still neeeded).
- Davidson diagonalization returns best estimate for
eigenvalues and eigenvectors also in the case that not all
roots have converged. This is more consistent and should
somehow alleviate the problem of WARNING messages in scf and
band structure run.
- Number of beta function in pseudopotentials increased to 8.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@130 c92efa57-630b-4861-b058-cf58834340f0
- some new pseudo
- some new cp_examples
- NEW shared module constants, this is the merge of FPMD and PW constants module
- NEW fpmd2upf pseudo converter (from fpmd format to upf )
carlo
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@22 c92efa57-630b-4861-b058-cf58834340f0