Next: Write a zus* module
Up: Short description of the program: QMC
Previous: Die Module
~
/qmc for execution e.g. the command
make tphi
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).
Robert Bahnsen