next up previous contents
Next: Write a zus* module Up: Short description of the program: QMC Previous: Die Module

Generate a program

The tool to generate an executable program is make which implies the use of the Makefile. Principally, make is a language which connects with commands on the user surface (so-called shell commands). It detects dependencies between program parts and generates targets through respecting the dependencies, i.e. before a target is made all inactual targets which appear in the list of dependencies are updated (maked). A target being actual means it to be younger than its dependencies. Using the directory ~/qmc for execution e.g. the command make tphi
generates the above mentioned test program for the one-particle wave functions.

The above used main programs lend also their name for the targets. One has to append at the name an _o for generating the objects *.o. Without this suffix one saves disc space because the intermediate step of generating object files *.o from *.for files is skipped. Instead, directly the executable is generated. The latter is recommended for compilation because of the presence of parameters which may change:
make gsahga
generates the executable for the bulk of GaAs. Parameters which can be fixed at this stage are so-called macros of make. Setting a macro in the make line overwrites the value obtained from the Makefile. Two of them are imporant for daily use. The macro M defines the suffix of the file sed containing the stream editor commands which accomplish the preprocessing of the *.for files. This preprocessing contains system specific changes in the Fortran dialect as e.g. the size of the simulation cell. It is applied to each target and influences also the setting of the array boundaries in Fortran parameter statements. The respective file ~/qmc/sedf/sed.* is completed by the Makefile through appending the value of M [SUB.MV.SYS], note that the parentheses describe the new notation. In the old notation sed.2.1 is the basic setting if this macro is not set in the make line. The settings of M or of SUB.MV.SYS, respectively, specify only the sed.* file name and do not directly transfer parameter values. The first number in M reflects the system size which refers to the program variable N1D which is read-in via an input file. The second number after the dot describes the number of basis atoms in the unit cell. As only two systems, Lithium and Galliumarsenide, actually are calculated this is already sufficiently characteristic. Lithium contains one atom in the basis, so one may use e.g.
make M=1.1 liagga     or
make M=2.1 liagga     or
make M=3.1 liagga     or also the foregoing with lippga.
For Galliumarsenide only two of these dimensionings
make M=1.2 gsahga     or
make M=2.2 gsahga     .
might work on most systems because of memory capacity. It may happen that for gsppga an additional line is required in both sed.* files to automatically control also the number of plane waves and thus the dimensioning of the arrays belonging to the plane waves or their Fourier components, resp., both of course depending on N1D.[*] The second macro which occasionally might to be introduced by hand in the make line is FAST. The program usually is optimized with respect to run time. This compiler option on a SUN system would be -fast -O5 [T3E: -O3,unroll2,pipeline2 -apad -lmfastv] which is the presetting for the macro FAST. This value will be cancelled if one writes FAST=  in calling make and consequently the compilation time is reduced by about 3 minutes at the disadvantage of an appreciably longer run time up to a factor of 2.5. For test runs with many compilations the advantage will weigh more with this setting, viz.
make M=1.2 FAST= gsahga    .

A further set of macros contains the dependencies and the modules that are needed for a specific program. The macro GSAHGA for instance contains the names of all necessary modules, separated by spaces and omitting their extensions (*.for or similar). It could be put into the Makefile itself as it has not to be changed frequently. The respective statement line are found in the upper part of the Makefile. There one could edit and replace e.g. zusdum by zusrho (density) or by zussb (spin orbit coupling).


next up previous contents
Next: Ein zus*-Modul schreiben Up: Short description of the program: QMC Previous: The modules

Robert Bahnsen
1/28/2002