Source tree : Directories and files

Introduction

THIS FILE IS OUTDATED !!

This page provides a description of the organisation of the abinit package, in terms of subdirectories and their content.

The main directory of the abinit package is referred to as ~abinit hereafter, independently of its absolute location. From the Web site, a file *abinit-x.y.z.tar.gz can be dumped and, following the installation notes, a ~abinit directory will be created for this version.

See the files ~abinit/doc/tutorial/welcome.html and ~abinit/doc/users/new_user_guide.html for an introduction to the abinit package. Instructions to install the code, make the executable and run some tests can be found in the ~abinit/doc/install_notes directory. These files are also available on the Web : http://www.abinit.org/documentation/helpfiles .

There are numerous subdirectories in ~abinit, grouped by purpose:

We will now describe the content and use of the doc/, src/, and tests/ directories.


A. doc/

This subdirectory contains all the files that describe information related to the ABINIT package. There are several HTML files, accessible directly from the Web, the other ones being plain-text (or in the markdown format). Many of these files are also ported to the Web frequently.

A.1 doc/users

Here is the place any user of ABINIT should look for documentation in. In particular, we would like to attract your attention to the following help files:

Other HTML files:

Some of the other (non-HTML) files are worth to mention (in alphabetical order, and forgetting about possible version numbers or dates):

A.2 doc/tutorial

A.3 doc/input_variables

A.4 doc/developers

Some of the other (non-HTML) files are worth to mention (in alphabetical order, and forgetting about possible version numbers or dates):

A.5 doc/help_make

A.6 Other subdirectories

In addition to these files, several subdirectories are based in the doc/ directory:


B. The src/* directories

These directories contain the source of the routines in the ABINIT package, as well as their lists (abinit_src files).

Subdirectories are labelled with a long name “xy_shortname”, where xy is a two-digit number, e.g. 32_util .

The digit in the long name has the meaning of a level (in the link procedure). Routines in the level 01 (in the directory src/01_gsl_ext) do not use any other-level routine. The routines of level 68 use only routines of directories xy_name where xy is lower than 68. The level ordering continues until level 98, with *src/98_main*, which contains main programs.

There are many 30 src/* directories, so it is rather difficult to memorize in which directory one can find one particular file. Note that the name of all subroutines are different from each other in these src/* directories. This means that, in order to edit a particular routine, one ought not know in which directory it is located! Suppose that you want to modify the routine kpgsph.F90 using the vi editor. The easiest way is to simply issue vi */kpgsph.F90 and modify the file. Just type ls */kpgsph.F90 if you really need to know in which directory the file is located.

B.1. src/10_defs

In particular, this directory contains:

The other defs_* modules presently contain the definitions of derived datatypes.

B.2. src/32_util

This directory contains small utility routines that are used in different places in the ABINIT package. These utility can be related to the treatment of characters, to basic mathematical operations, or to basic chemistry and physics data.

B.3. src/98_main

This directory contains the Fortran programs top routines, e.g. abinit.F90, newsp.F90, mrgddb.F90, anaddb.F90, lwf.F90, conducti.F90, aim.F90, cut3d.F90, mrggkk.F90, macroave.F90, optic.F90 …


C. The tests/*, Tutorial, and Psps_for_tests directories

This directory contains a set of tests of the code, aimed at testing whether the code is coherent in time (successive versions), and exercising many parts of the code. However, they do not examine its accuracy on physical problems, mainly because the number of plane waves used is too small, and some tests are not run to convergence.

In order to understand the structure of this test directory, one might start by looking at http://www.abinit.org/developers/dev-environment/buildbot/howto-add-a-new-test-in-the-test-suite