The following variant of the DIIS Residual Minimization Method, based
on three steps, has been implemented :
1) At the first "scf" step of the first "ionic" step, the diagonalization
starts with an initialization procedure. Two (or more) sweeps on all
the bands are performed. A sweep consists in two (or more if required)
unconstrained trial steps (steepest descent steps) followed by a
subspace rotation. If convergence is not achieved in this phase a
final trial step is done.
In all the other cases the initialization procedure consists in a
subspace rotation followed by a trial step.
2) Diagonalization based on the DIIS algorithm is performed on the lowest
( nbnd - 2 ) bands. Orthogonalization of the eigenvectors is done at
each step. The possibility of orthogonalizing a given band only to
those inside an energy window is also implemented.
3) The topmost two bands are converged using a standard
conjugate-gradient procedure. This ensures that eventual holes
left by the DIIS algorithm can be identified and filled.
If two holes have been found this procedure is repeated on the
topmost two bands (previously optimized with the DIIS algorithm).
C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@1014 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
field has been changed.
- Density mixing is now available.
- Explicit mixing of the dipole moment in potential mixing has
been removed (in my opinion it was spurious).
If anybody experiences bad convergence with the present scheme
please let me know. (SdG)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@908 c92efa57-630b-4861-b058-cf58834340f0
set in input.f90 to "prefix.EXIT".
This is necessary to allow the user to stop the "correct" job when several jobs are
running on the same working directory.
C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@798 c92efa57-630b-4861-b058-cf58834340f0
This required a deep modification of the parallelism in PWscf:
there are two new communicators (intra_image_comm and inter_image_comm) and the
existing "pool" communicators (intra_pool_comm and inter_pool_comm) are now vectors
of length given by the number of parallel images. #ifdef __PARA is no longer
needed because all "parallel" variables are always initialized for a serial run
and all parallel routines are, in the case of a serial run, dummy routines.
The wrappers to MPI routines used only by PWscf are in the PW/para.f90 file.
The others (mp_***) are in the Modules/mp.f90. All explicit referencies to mpif.h
should be replaced by an "USE parallel_include" (in a serial run parallel_include
is simply a dummy module).
2) The extrapolation of both potential and wavefunctions has been rewritten in
order to be smarter than before: on the basis of the required extrapolation
order, on the basis of the history and on the basis of which files are really
present on the disk, the algorithm chooses the extrapolation order.
All the algorithms in which ions are moved can use the extrapolation.
These are both unstable features: I need the help of everybody to test them.
C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@742 c92efa57-630b-4861-b058-cf58834340f0
order to allow to specify how to fill starting ns occupation
matrices. Useful when the default choice take the wrong
(or not desired) path.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@598 c92efa57-630b-4861-b058-cf58834340f0
Modification postponed.
Note that the actual version is not compiled on sp4 when the -DFLUSH precompiler flag is used.
stdout is flushed instead of unit 6.
C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@534 c92efa57-630b-4861-b058-cf58834340f0
correct place (kinds); module "varie" replaced by "control_flags" (not
yet in pwcom, though) - many many files changed.
64-bit cpus (Opteron, maybe Itanium) should now work if __LINUX64 is defined
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@513 c92efa57-630b-4861-b058-cf58834340f0
- module filnam in pwcom moved to io_files module
- module units in pwcom moved to io_file
From now on, all file names and their unit and attributes (i.e. reclen)
should be defined in Modules/io_files.f90
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@382 c92efa57-630b-4861-b058-cf58834340f0
- ^M removed from pseudo files
- wavefunctions arrais moved to module
wavefunctions_module, common to all codes
this is required to reduce duplicated subroutine
- new lapack subroutine, called from PWCOND,
added to lib/lapack.f lib/lapack_ibm.f
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@381 c92efa57-630b-4861-b058-cf58834340f0
kept fixed (Carlo Sbraccia)
"Total force" now prints a more sensible quantity:
\sqrt(\sum_{i,n} f_i(n)^2) instead of \sum_{i,n} |f_i(n)|
Cleanup in several routines and in modules.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@334 c92efa57-630b-4861-b058-cf58834340f0
contributed by Adriano Mosca Conte,
added to the repository.
The non collinear code has required
a new module "wavefunctions" containing
"psic" and "evc", that no longer belong
to pwcom.
use: cvs update -d
there's a new example (example13), that is not
yet complete, I'm waiting for the appropriate
pseudopotential from Adriano
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@322 c92efa57-630b-4861-b058-cf58834340f0
Added the possibility to subtract the dipole field
for slab or molecule calculation.
(See PRB 59, 12 301 (1999) and PRB 63, 205426 (2001).)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@252 c92efa57-630b-4861-b058-cf58834340f0
hdiag-e*sdiag is close to zero) used in cegterg. This
removes most of the warning messages when using Davidson
diagonalization. Although the overall performance (number of
h_psi performed) does not seem to change very much in small
tests, except pathological cases like ni.band.in in example1,
it should be wise to have a more stable preconditioning.
cegterg: use always GEMM instead of GEMV in the update.
electrons: in a relaxation run perform accurately the first
iteration after ionic move but reset the diagonalization
threshold according to the actual self-consistence for the
following ones.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@147 c92efa57-630b-4861-b058-cf58834340f0
cegterg, regterg: use GEMM instead of GEMV, do not require
any longer evc, et to be dimensioned nbndx (et is now
dimensioned (nbnd,nkstot)) - misc. cleanup
Il calcolo di (H-eS)*psi ('update') nella diagonalizzazione iterativa
prendeva un tempo esagerato. L'ho modificata in modo da usare prodotti
matrice-matrice su tutti gli psi invece che matrice-vettore su ogni
psi, se piu' di 1/4 dei vettori non e' a convergenza. La cosa e' fatta
a naso e richiede ulteriori di prove, ma mi sembra che apporti dei
miglioramenti.
In TODO ho messo una lista di cose da fare.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@145 c92efa57-630b-4861-b058-cf58834340f0
localized orbitals. Hubbard_l=0,1,2,3 are now possible.
It has been tested that calculations done for Hubbard_l=2
are reproduced. More testing on non-d material needed.
SdG + Gabriele Balducci
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@57 c92efa57-630b-4861-b058-cf58834340f0