Most of the changes consist in small updates to Makefile and make.depend and
in the replacement of module "parameters" with "upf_params" whenever variables
lmaxx and lqmax are USEd. Routine "read_pseudo" moved back to Modules/;
"simpsn" moved to upflib/; a copy of "matches" temporarily added to upflib/
Note that everything compiles (except EPW) but nothing has been tested yet!
counterpart unset_mpi_comm_4_solvers are called at the begining and
at the end of the same source, so that unset_etc_etc is never called
by mistake (I don't think it is really necessary to call it, actually,
it's just a good habit). Asymptotically set_etc_etc should be moved to
the source code where parallel diagonalization is performed.
- to avoid unneeded dependencies: currently each and every code that initializes mpi depends upon LAXlib,
including those that never diagonalize a matrix (e.g., ld1.x). This is completely ridiculous.
- to be free to choose the parallelization of linear algebra after data is read and metabolized.
It used to be done like that some time ago, by the way.
IMPORTANT NOTICE: all codes that use parallelization of linear algebra MUST explicitly call mp_start_diag.
Currently this is done by: cp.x, pw.x, neb.x, ph.x, projwfc.x. All other codes cannot currently use linear
algebra parallelization (linear algebra will run on 1 processor).
- mp_world and world_comm should be used only in MPI initialization,
not directly in codes - replaced by mp_images and intra_image_comm
(except in a few cases whose usage is unclear to me)
- mp_global should be used only to provide initialization routines
mp_startup, mp_global_end
- specific mp_* modules should be used for parallelization level on *
(* = images, pools, bands, orhtoh, ...)
Nothing actually changes (I hope) but things will look cleaner if the module
for the required parallelization level is USEd instead of a generic one that
does too meny things at the same time. The final goal of this operation is to
better disentangle the various parallelization levels and to have a better
organized, more granular MPI initialization that does not introduces artificial
and meaningless dependencies. Not done for: PHonon, CPV, TDDFPT, GWW, EPW
uneeded relinking; the mysterious "tldeps" machinery modified accordingly;
added explicit dependencies to GWW targets to prevent (once again) problems
with make -j (seems to work now). make.depend updated (once again).
impossible clashes with LIBS as defined by the OS or as used by the configure's
of external libraries (e.g. FoX, for which one such problem has been reported)
Since github and gitlab just distribute a snapshot of the git repository,
these files must be in the repository as well. NOTA BENE:
All changes MUST GO TO *.tex or *.def FILES, NOT to these files!
Also note that the "make doc" machinery produces also *.xml files and
latex2html converted html versions of latex files. I don't think they belong
to the repository (latex files should maybe be replaced by md files)
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
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
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
- error message in latgen also for negative ibrav
- double grid warning for NCPP only if no core charge (Hyungjun Lee)
- PGI problem with new xml format: do not pass unallocated arrays
- more updates to (still unfinished) cp_restart_new
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13459 c92efa57-630b-4861-b058-cf58834340f0
"--disable-xml", or add -D__OLDXML to MANUAL_FLAGS in make.inc, to revert
to the old xml format (note: configure is not yet updated). IMPORTANT NOTICE:
some codes *.e.g CP) will no longer work with the default choice, until fixed.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13405 c92efa57-630b-4861-b058-cf58834340f0
1) the dependency upon module "extfield" via recently introduced "monopole"
variable made explicit in the call, with an optional variable
2) the code doesn't stop any longer in case it doesn't manage to find
symmetries, it just issue a warning, removes symmetry and proceeds
Should be harmless but please check. All make.depend files updated.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@13114 c92efa57-630b-4861-b058-cf58834340f0
prevent trouble with OS-X. May or may not work (it won't unless configure
is updated: please somebody with v.2.63 of autoconf do it), may turn out to
be obsolete anyway.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12364 c92efa57-630b-4861-b058-cf58834340f0
moment to get rid of flib/, whose usefulness is far from obvious. The content
of flib/ is now in Modules/. Many makefiles updated and little more.
Packages using QE routines should just remove links to flib/flib.a.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12072 c92efa57-630b-4861-b058-cf58834340f0
different machines. Removed a debug printout in path_read_cards_module,
sources passed through the "normalizer" (many changes but nothing substantial)
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@11900 c92efa57-630b-4861-b058-cf58834340f0
command_argument_count, flush, are used everywhere instead of wrappers.
Some old versions of compilers may no longer work.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@11759 c92efa57-630b-4861-b058-cf58834340f0
1. rewritten the core part of the ESM to improve readability and efficiency
of the code (esm.f90).
2. introduce a new function (exp_erfc(x,y) = exp(x) * erfc(y)) to avoid
getting “NaN” in particular case.
4. two dimensional (xy plane) average charge density and electrostatic
potentials are printed out to ‘prefix.esm1’ instead of stdout
3. make ESM calculation compatible with the NEB (neb.x).
4. introduce the constant bias potential (constant-mu)
(PRL 109, 266101 (2012)) feature to both pw.x and neb.x.
5. write ESM information in the XML file (One can use post-processing program
such as pp.x).
6. including various example calculations.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@11662 c92efa57-630b-4861-b058-cf58834340f0