##### Copyright (C) 2001 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 January 2001 and April 2001:
    Razvan Caracas, Nathalie Capron, Thierry Deutsch, Martin Fuchs,
    Ikutaro Hamada, Francois Jollet, Gyuchang Jun,
    Herve Matthis, Masayoshi Mikami, Sa Nai,
    Jean-Yves Raty, Gian-Marco Rignanese,
    Catherine Roult, Aline Roy, Luc Sindic, Pascal Thibaudeau,
    Marc Torrent, David Vanderbilt,
    Matthieu Verstraete, Gilles Zerah.

    I think 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 3.1, released on April xx, 2001.

    Changes with respect to version 3.0 :

    A. Changes for the installation.
    B. Most noticeable changes in the code.
    C. WARNINGS.
    D. Other changes.

    __________________________________________________________________

    A.  Changes for the installation.

    A1. Information : the directories Test_v3 and Test_physics
        have been created. They are similar to other Test* directories.
        Test_v3 contain the new quick tests of ABINIT related to ABINITv3.1,
        while Test_physics contain tests that are much longer to execute...
        The tests 11 to 13 of the latter present
        the computation of a Nb phonon band structure.

    A2. Information : the Src directories have been completely
        reorganised and split in different directories.
        The Src directories are now ordered according to
        a level of complexity, and related routines
        have been gathered in order to emphasize the
        modularity of ABINIT.
        The directory Lib_ffts has been transformed into the
        Src_ffts directory : all the fft files were
        translated in the style of ABINIT, to F90.

        This reodering should ease the choice of
        derived datatypes (structures), see B1, to be
        introduced gradually in the forthcoming
        versions of ABINIT.
        For more information of the different directories,
        see the ~abinit/Infos/dirs_and_files file.

    A3. Information : the HTML-formatted sources are available
        (they had been available already for v3.0.3)

    __________________________________________________________________

    B.  Most noticeable changes.

    B1. Improved coding rules have been established. The initial
        impetus has been given by H. Matthis. A working
        group (H. Matthis, G. Zerah, P. Thibaudeau,
        M. Verstraete, G.-M. Rignanese and X. Gonze)
        has discussed all the proposed modifications.
        The result is a new version of the
        ~abinit/doc/developers document.
        Developpers are stronly adviced to have a look
        at this document.
        Briefly, new rules and advices are set up for the
        use of :
        - modules
        - pointers
        - derived datatypes (structures),
        - F90 interfaces of routines
        - optional arguments of routines.
        New (or modified) rules will be enforced gradually.
        There are already a few examples of the new
        constructs in ABINITv3.1. However, the use
        of derived datatypes is a big issue, and will lead
        to major modifications of the code in the forthcoming
        versions.
        The directory Src_0basis has been created, with
        the basis_defs module (very important for developpers !!!),
        as well as some other low-level
        routines, like wrtout, leave_new, timein, timeab, and
        the machine-dependent routines. Some of them are
        using calls to MPI features.

    B2. The computation of stresses and response
        to atomic displacements (phonons) including the
        spin-orbit coupling is now available (in addition to the
        total energy, forces and the electronic eigenenergies,
        that were already present in v3.0).
        The stress work has been done by M. Torrent, helped by
        F. Jollet, G. Zerah and X. Gonze.
        The response with respect to homogeneous electric
        field is not yet there, but it will come.
        NOTE : response with respect to atomic displacement
        in the spin-orbit case is still under testing.
        There seems to be a bug in v3.1.0 .

    B3. The determination of the parents to each subroutine
        can now be obtained, thanks to the "parents.pl" script,
        written by L. Sindic. A new script, called 'abirules'
        has been started : thanks to this scripts, coding
        rules can be checked, and even enforced.

    B4. The MPI-parallelism over spin is now implemented, in the
        case nsppol=2. It is combined with the k-point
        parallelism. It has been coded by A. Roy.
        By the same token, the MPI-parallelism over bands for the
        ground state has been prepared. See also the
        introduction of the wfoptalg input variable.

    B5. General linear constraints on the displacements
        of atoms can now be enforced in optimisation of structures,
        or molecular dynamics. Coded by S. Erwin.
        See the new keywords nconeq, natcon, iatcon, wtatcon,
        as well as test 5 of Test_v3 .

    B6. The Fast Fourier Transform module has been the subject of
        many changes and improvements:
        The FFTs from the NEC lib can be used, by F. Finocchi and C. Roult.
        The FFTs from the SGI lib can be used, by H. Matthis and P. Thibaudeau
        The FFTs from the FFTW lib can be used, by H. Matthis and P. Thibaudeau
        Also, the set of routines have been completely reorganised, and the
        optimisation for OpenMP-parallelism is going on, with A. Roy.

    B7. The computation of the Berry phase has been generalized:
        it can use the time-reversal symmetry, it is able
        to use wavefunctions on disk (so, the constraint nkpt=mkmem
        has been waived), by M. Veithen.
        The computation of the derivative of the wavefunctions
        with respect to k, in the Berry phase finite-difference
        approximation, has been coded by Na Sai. The same
        generality as for Berry phase is available.
        The new input variable "berryopt" has been introduced.

    B8. The number of perturbation types is no more restricted
        to natom+4 (phonons, electric field, stress). The possibility
        for the developpers to define their own perturbation(s) has been
        granted. See the input variable rfuser . Perturbations
        ipert=natom+5 and ipert=natom+6 are dedicated to that use.
        This paves the way to the introduction of perturbations
        like the alchemical perturbation, occupation number perturbation,
        of magnetic field perturbation.

    __________________________________________________________________

    C.  WARNINGS

    C1. Developpers should read the new module Src_0basis/basis_defs.f :
        it is used in ALL source files. This will change some of your
        coding habits.

    C2. It is no more needed to specify FFTS_A in
        makefile_macros, as Lib_ffts has become Src_ffts, see
        point A1.

    C3. The default value for nberry has changed (from 0 to 1);
        berryopt is needed for Berry phase calculations, or
        related derivatives with respect to k wavevector.
        See section B7.

    __________________________________________________________________

    D.  Other changes.

    D1. The derivative with respect to the wavevector (RF : ddk) can now
        be computed for pseudopotentials with a non-local l=3
        part. This also allows non-local l=3 part for the derivative
        with respect to an electric field.

    D2. The expectation value of the derivative of the Hamiltonian
        with respect to the wavevector, for each eigenfunction, is
        now printed, in the ddk case. Thanks to the Hellman-Feynman theorem,
        it is equivalent to the derivative of the eigenenergies
        with respect to the wavevector, when the eigenenergies
        are not degenerate. See Test_v3 #02 .

    D3. Installation on a Linux/PC, using the NAG compiler, by N. Capron.

    D4. Optimisation on a NEC/SX5, by F. Finocchi and C. Roult.

    D6. Cut3d can produce XCrysDen and tecplot formats, by M. Verstraete.

    D7. Many bugs or errors have been removed. Contributions by
        R. Caracas, T. Deutsch, J.-Y. Raty, G.-M. Rignanese,
        M. Torrent, M. Verstraete, Gyuchang Jun,
        L. Sindic, I. Hamada, N. Capron, M. Mikami.

    D8. Other developments have been going on, but are not yet available
        for general usage ...