<html>
<head>
<title>abirules : README</title>
</head>
<body>

<h5>Copyright (C) 2009-2012 ABINIT group (DCA, XG)
<br> This file is distributed under the terms of the GNU General Public License, see
~abinit/COPYING or <a href="http://www.gnu.org/copyleft/gpl.txt">
http://www.gnu.org/copyleft/gpl.txt </a>.
<br> For the initials of contributors, see ~abinit/doc/developers/contributors.txt .
</h5>

<pre>
This directory, abirules, contains tests which examine
whether the abirules are followed or not.


To run these tests, do the following:

0. Be sure that the perl script "run-standard-tests", in the main directory,
   has been generated from the primitive file "run-standard-tests.pl", 
   thanks to the command "make perl"
   issued in ~abinit (see the installation notes on the Web).

1. Submit the "run-standard-tests" script, specifying a machine, and
   the keyword "fast" (for Tests_fast) and either
   the index of a test case, i.e.
   (run-standard-tests name_of_machine fast 22) >& log_file 
   or a whole range of test cases (two indices), i.e.
   (run-standard-tests name_of_machine fast 02 08) >& log_file 
   or, if you want to run all the test cases of this directory
   (run-standard-tests name_of_machine fast) >& log_file
   This will send stdout and stderr to log_file.
   The script 'run-standard-tests', will create a subdirectory of
   ~abinit/tests/fast, with the name_of_machine and the date, where
   all the results will be placed.

2. In that directory, you will find for each test case that you have
   run, a log file (with the name of the test case), an output
   file, but also a 'diff.xxx' file, automatically created by making
   a 'diff' with respect to the "ibmtest" subdirectory output files,
   and a 'difnew.xxx' file, automatically created by making
   a 'diff' with respect to the "Refs" subdirectory output files.
   The first one contains output files from the Plane_Wave code,
   while the second one contains output files from a recent version
   of the ABINIT code.
   There may be large differences in timing but there should only
   be minor differences in the output of physical quantities.

3. There is also a global report file, generated by the use of the
   fldiff script. Its name is fldiff.report . See the last
   version of the  ~abinit/doc/install_notes/install** file
   in the Infos directory for information about the use of this file.
   This file is the most convenient for a quick look at the correctness
   of results. When the results are not correct, one has often to
   rely on the 'difnew.xxx' file to understand what was going wrong. 


**********

Test cases:

01. Use docchk.py from JZwanziger, to see whether
    all input variables are documented (in doc/input_variables)
    and tested at least once.
    At present (v5.9), all input variables have a section in doc/input_variables ,
    although some section might be restricted to stating that the variable exists.
    A few tests are missing. 
    
03. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Unused variable'

04. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Unused dummy argument'

05. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Nonstandard type declaration'

06. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Same actual argument associated with INTENT(OUT)'

07. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'CHARACTER expression will be truncated in assignment'

08. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Limit of 39 continuations exceeded'
    This test should not be activated, since the compiler produces
    this warning even when the F95 standard is respected !

09. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'DOUBLE COMPLEX at (1) does not conform to the Fortran 95 standard'

10. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Label XX at (1) defined but not used , where XX is a line number

11. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Character length of actual argument shorter than of dummy argument'

12. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    warning = True
    Warning = 'may be used uninitialized'
    This test should not be activated, since in many cases, it is irrelevant,
    and actually sometimes I do not understand why the compiler claim that
    some variable might be uninitialized ...

13. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Obsolescent'

14. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Type specified for intrinsic function'

15. Test the presence of warning messages on the bigmac_gcc43_debug platform.
    Warning = 'Nonconforming tab character'

16. Test the presence of forbidden access to the output files.
    Such access should be through 'write(std_out' or 'write(ab_out'

17. Test the presence of non-ASCII characters in the source files 
    (Fortran, header, C, CUDA)

18. Test the presence of inlined CPP MACROS 
