##### Copyright (C) 2003 ABINIT group (XG)
This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
For the initials of contributors, see ~abinit/doc/developers/contributors .

    Many thanks to the following contributors to the ABINIT project
    between February 2003 and May 2003 :
    J.-M. Beuken, F. Bruneval, M. Boulet, R. Caracas, F. Dortu, D. Hamann,
    Ph. Ghosez, F. Jollet, N. Marzari, T. Maxisch, M. Mikami, F. Nastos,
    A. Oganov, V. Olevano, W. Pichl, G. Pourtois,
    J. Raynolds, V. Recoules, G.-M. Rignanese,
    A. Roy, L. Sindic, M. Torrent, B. Van Renterghem, M. Veithen, M. Verstraete,
    E. Willighagen

    It is worth to read carefully
    all the modifications that are mentioned in the present file,
    and examine the links to help files or test cases ...
    This might take some time ...
    Please note the WARNINGS !

    Xavier

    __________________________________________________________________

    Version 4.1, released on May 15, 2003.

    Changes with respect to version 4.0 :

    A. WARNINGS.
    B. Most noticeable achievements (for users)
    C. Most noticeable changes in the package (for developers)
    D. Other changes (or on-going developments, not finalized)

    __________________________________________________________________

    A.  WARNINGS

    A1. The name of the input variables "type" and "ntype" have been changed
        to "typat" and "ntypat" (for TYPes of AToms). For the time being,
        the old input variables are still recognized.
        This was needed, because "type" is a FORTRAN90 reserved word,
        also used in many different contexts, so that the old name
        was causing some problems.
        See the list of abinit input variables.

    A2. The header of the wavefunction, density and potential
        files have been changed, and contain now the additional information concerning
        the perturbation (pertcase) and the q-wavevector (qptn).
        See the description of the new header in section 6.4 of abinis_help.html .
        The files containing the old header should still be read
        correctly (so, there is backward compatibility, as usual).

    A3. The header of the (formatted) DOS file includes now the Fermi energy.
        Some people might have to update automatic script using such files (M. Verstraete).

    __________________________________________________________________

    B.  Most noticeable achievements

    B1. The PAW part of ABINIT is available for BETA TESTING (M. Torrent and F. Jollet).
        The context in which it is expected to work is as follows :
        the computation of electronic energies, charge density and
        total energy in self-consistent calculations, for nspinor=1,
        spin-unpolarized or spin-polarized (nsppol=1 or nsppol=2),
        sequential as well as parallel.
        See the test cases Test_v4#4, 5 and 6, as well as the new
        input variables pawecutdg, pawlcutd, pawmqgridg, pawnphi, pawntheta .
        NOT YET FOR BETA TESTING : forces, stresses, RF, GW, nonlinear responses, TDDFT,
        or utilities like cut3d, conducti ...
        Two pseudopotentials are available in ~abinit/tests/Psps_for_tests, while
        for other pseudos, contact Francois Jollet or Marc Torrent.

    B2. The FAQ section of the Web site has been considerably
        improved and expanded by Masayoshi Mikami,
        see https://www.abinit.org/FAQ.html

    B3. Improvements of the GW computations :
        it is now possible to start a GW computation without
        first diagonalizing the full Hamiltonian matrix.
        Use kssform=3 . Also, the problems with the inversion
        symmetry and the non-symmorphic symmetries have been solved.
        (Valerio Olevano and Fabien Bruneval)

    B4. The MRGDDB and ANADDB utilities are now able to
        treat the Derivative Data Bases containing
        the 3rd order derivatives of the energy, generated using
        the 2n+1 theorem of perturbation theory in ABINIT.
        Thus, ANADDB can be used to derive the
        for electro-optic coefficients, including the displacement
        of atoms, and also deliver the derivative of the
        dielectric tensor with respect to atomic displacements,
        leading to Raman cross-sections.
        Example : Test_v4 #40,#41 and #42 .
        (M. Veithen, +some help from Ph. Ghosez and XG)

    __________________________________________________________________

    C. Most noticeable changes for the developers

    C1. The new directory Src_2spacepar has been created.
        This directory contains level-2 subroutines used
        to treat operations in reciprocal or real space that
        need to be parallelized in these spaces.
        These are mostly basic numerical routines, in the
        spirit of BLAS, but adapted to wavefunctions or
        density and potentials, in which one has to take
        into account, on one side, the nspinor, isrtwfk, nspden
        or cplex characteristics, and, on the other side,
        the specific spread of the components in G- or R- space
        for parallelisation.
        Different routines have been created, to be called when
        operations involving talking between different processors
        have to be performed. Many routines in the remaining of the
        code are already using them. More routines should be written.

    C2. The new directory Src_1contract has been created.
        This directory contains level-1 subroutines used
        to favour the re-use of routines through the so-called
        "design-by-contract" idea. These subroutines can be called
        at the beginning of other routines, to check the validity of their
        arguments. The corresponding section is left by the CPP preprocessor
        only if it is called with the -DCONTRACT option.
        At present, only routines from the Src_2spacepar
        use that technique.
        See ~abinit/infos/makefile_macros_help , as well as
        ~abinit/Mach*/*P6*/makefile_macros.PGI_dummy .

    C3. Powerful options of the script "abirules" (written by L. Sindic),
        have been used on all the *.f files. So, many declarations
        in most of the *.f files have been modified.

        Reminder : the goal of this script is the automatic modification
        of the Fortran source, in view of the fulfilment
        of the ABINIT coding rules. In particular,
        this script can automatically reorder (using alphabetic classification)
        the variables in declaration lines, or even accross declaration lines.
        This means that the developer should not worry too much now about
        the ordering of input variable declarations, it will be done automatically.
        For those interested, the command to be executed to apply abirules is
        make abirules
        from the main directory. The abirules script is in ~abinit/abirules .

    C4. All the automatic tests can now be used in parallel.
        The user has to define a "COMMAND_PAR" line
        (the adequate command to run abinip) in the makefile_macros
        (see an example in Mach*/*P6*/makefile_macros.PGI_dummy),
        and then issue "make tests_paral" . The Makefile, makemake,
        and Run.pl files, in the
        Test_fast, Test_v1, Test_v2, Test_v3, Test_v3 and Tutorial
        directories have been modified such as to recognize a fake
        machine name ("paral"), and then to drive the automatic
        tests using the "COMMAND_PAR" definition.

    C5. Read A1.
        Then, not only the name of the input variables "type" and "ntype"
        have been changed
        to "typat" and "ntypat" (for TYPes of AToms) inside the code,
        but also many other variables, that are linked to "type", were changed,
        e.g. itype and mtype have been changed to itypat and mtypat.

    C6. Read A2, about the header of the wavefunction, density and potential
        files that have been changed.

    __________________________________________________________________

    D.  Other changes
    (or on-going developments, not yet finalized).

    D1. The 'Run' perl scripts for the Test_fast, Test_v*, Test_cpu ,
       as well as the 'serieX' perl script have been updated, for
       execution under Windows 9x (L. Sindic)

    D2. ABINIT now checks whether the input dilatmx is sufficient
       for the tentative change of primitive cells. Previously,
       no check was made, and a large increase of cell volume
       could crash the code.

    D3. The 'hiding' of the MPI calls present in most parallel routines
       has begun : the goal is to allow MPI-independent writing of code,
       still executing correctly in parallel. The MPI calls are
       encapsulated, presently in the defs_xderive and def_xfuncmpi
       modules. (M. Boulet and A. Roy).

    D4. Possibility to compile "quickly" ABINIT, see the
       keywords quick_xxx or quickp_xxx when you issue
       make help_dev
       (M. Torrent).

    D5. The utility conducti has been improved by V. Recoules :
       use of Gaussian smearing to obtain smoother curves.

    D6. The utility band2eps has been contributed by F. Dortu
       and M. Veithen. This utility allows to draw phonon dispersion
       curves automatically, in a file written in Encapsulated PostScript (eps).
       Moreover, a color code allows to emphasize the contribution of individual
       atoms to the corresponding eigenvector (at most three types of atoms).
       See Test_v4#50-#51, and the ~abinit/Infos/band2eps.help file .

    D7. The angular momentum decomposition of the
       electronic Density-Of-States using
       the tetrahedron method is in progress (M. Verstraete).

    D8. Response to strains have been coded by D. Hamann,
       and transferred recently to v4.0. Might be present in v4.2 .

    D9. The (fake) name of the machine chosen to run the automatic tests
       from the top directory (e.g. make tests_allseq) is now "test",
       and no more "t3e".

    D10. The Bader (AIM) code has been modified, to secure better
       portability accross platforms, by eliminating problems
       with the order of critical points. The automatic test
       analysis has also been tuned.

    D11. If the input value of ixc is not provided, ABINIT will examine
       the pseudopotentials, and if all agree on one XC approximation,
       the corresponding ixc will be used.
       See the description of the input value ixc.

    D12. Switch from CML1 to CML2, by E. Willighagen

    D13. New makefile_macros :
       Mach*/HP/makefile_macros.imec (from GPourtois)
       Mach*/SGI/makefile_macros_green (from AOganov)
       Mach*/DEC/makefile_macros.janus (from TMaxisch)
       Mach*/IBM/makefile_macros.Raynolds (from J. Raynolds)
       Mach*/P6/makefile_macros.PGI_dummy (with B. van Renterghem)
       Mach*/P6/makefile_macros.IFC_dummy (with B. van Renterghem)
       Mach*/P6/makefile_macros.IFC_cernunnos (from WPichl)

    D14. Other contributions (mostly debugging) by L. Sindic, N. Marzari,
       F. Nastos, W. Pichl, L. Pizzagalli, A. Oganov, G.-M. RIgnanese, R. Caracas, M. Verstra