Depending on the calculation, the PSI3 package often requires substantial temporary disk storage for integrals, wave function ampltiudes, etc. By default, PSI3 will write all such datafiles to /tmp (except for the checkpoint file, which is written to ./ by default). However, to allow for various customized arrangements of scratch disks, the PSI3 files: block gives the user considerable control over how temporary files are organized, including file names, scratch directories, and the ability to ``stripe'' files over several disks (much like RAID0 systems). This section of keywords is normally placed within the psi: section of input, but may be used for specific PSI3 modules, just like other keywords.
For example, if the user is working with PSI3 on a computer system with only one scratch disk (mounted at, e.g., /scr), one could identify the disk in the input file as follows:
psi: (
...
files: (
default: (
nvolume = 1
volume1 = "/scr/"
)
)
)
The nvolume keyword indicates the number of scratch
directories/disks to be used to stripe files, and each of these is
specified by a corresponding volumen keyword. (NB: the trailing
slash ``/'' is essential in the directoy name.) Thus, in the above
example, all temporary storage files generated by the various
PSI3 modules would automatically be placed in the /scr
directory.
By default, the scratch files are given the prefix ``psi'', and named ``psi.nnn'', where nnn is a number used by the PSI3 modules. The user can select a different prefix by specifying it in the input file with the name keyword:
psi: (
...
files: (
default: (
name = "H2O"
nvolume = 1
volume1 = "/scr/"
)
)
)
The name keyword allows the user to store data associated with
multiple calculations in the same scratch area. Alternatively, one
may specify the filename prefix on the command-line of the psi3
driver program (or any PSI3 module) with the -p argument:
psi3 -p H2O
If the user has multiple scratch areas available, PSI3 files may be automatically split (evenly) across them:
psi: (
...
files: (
default: (
nvolume = 3
volume1 = "/scr1/"
volume2 = "/scr2/"
volume3 = "/scr3/"
)
)
)
In this case, each PSI3 datafile will be written in chunks (65
kB each) to three separate files, e.g., /scr1/psi.72, /scr2/psi.72, and /scr3/psi.72. The maximum number of volumes
allowed for striping files is eight (8), though this may be easily
extended in the PSI3 I/O code, if necessary.
The format of the files section of input also allows the user to place selected files in alternative directories, such as the current working directory. This feature is especially important if some of the data need to be retained between calculations. For example, the following files: section will put file32 (the PSI3 checkpoint file) into the working directory, but all scratch files into the temporary areas:
psi: (
...
files: (
default: (
nvolume = 3
volume1 = "/scr1/"
volume2 = "/scr2/"
volume3 = "/scr3/"
)
file32: ( nvolume = 1 volume1 = "./" )
)
)