The table below lists and describes all files that belong to the filter program.
File | Subprograms | Description |
---|---|---|
allocate.F | allocate | Contains the subroutines for setting pointers to the corresponding arrays. |
calculate.F | calcintensvec calcintensity trafoenergy correctenergy calcerror calcerror2 shiftimag (fdc only) |
Contains subroutines that perform various calculations needed by the filtering method. |
damping.F | dampfunc dampfour damp kamp1 kamp2 |
Contains various damping functions. |
ffortalloc.c | fcaller | Contains C-routines for the dynamical allocation of memory. |
filter.F / fdc.F |
freceiver id_filter |
Contains the main program. |
fglobal.inc | Include file containing variables global to the program. | |
genhamil.F | calchamil calckamil |
Contains the subroutines that set up the Hamiltonian matrices. |
input.F | readinput getinput readdata getautolen readauto getauto getexactlen readexact |
Contains the subroutines that read the input and autocorrelation files. |
fkeyword.inc | Include file containing variables needed in the input routines. | |
fmemory.inc | Include file containing the pointers to the "giant" memory array. | |
output.F | writeparam writeenergy writefauto errormsg |
Contains the subroutines that write the data to files. |
platform.F | mygetarg myiargc complexsize realsize integersize logicalsize |
Contains routines for reading command line arguments and functions that define the machine dependent size of variable types, depending on the platform the program is running. |
utilinp.F | getspara getrpara getipara getlpara chidef chrdef chldef ignorekey compulsory cpinput inperr |
Contains utility subroutines for reading the input. |
variation.F | variation variation1 variation2 variation3 |
Contains various variational principles. |
For the compilation of the source code the files compile and Makefile are also necessary.
The filter program filter uses the following MCTDH library routines. The corresponding libraries are linked automatically to the program.
Library | Subprograms |
---|---|
libla | cpqxd, cpvxd, dsyev, mvtxdd, qvxxdd, vvtxdd, xqxxdda, xvixddo, zeromxd, zerovxd |
libnum | dbubble, dbubble1, dmatch, dsinc, svd |
libsys | convertline, countentries, getkeyword, getpara, streq |
The program fdc uses the following MCTDH library routines:
Library | Subprograms |
---|---|
libla | cpqxz, cpvxz, mvtxzz, qvxxzz, vvtxzz, xqxxzza, xvixzzo, zeromxz, zerovxz |
libnum | zbubble, zbubble1, zmatch, dsinc, svdz |
libsys | convertline, countentries, getkeyword, getpara, streq |
Below you find a brief description of the routines used by the filter program. Where possible, an equation number is also given which defines the computation performed in the corresponding routine. Equation numbers written in italics refer to
M. H. Beck and H.-D. Meyer, Extracting accurate bound-state spectra from approximate wave packet propagation using the filter-diagonalization method, J. Chem. Phys. 109, 3730 (1998).
Equation numbers given in bold face correspond to
M. H. Beck, Berechnung von Schwingungsrotationsspektren mit Hilfe der zeitabhängigen Multikonfigurations-Hartree- und der Filter-Diagonalisierungs-Methode, PhD thesis, Universität Heidelberg, 2000.
Subprogram | Equation | Description |
---|---|---|
allocate | Computes pointers to the addresses of the "giant" memory array. | |
calcerror | 26, 9.12 | Estimates the error of the eigenvalues by computing the "standard deviation". |
calcerror2 | Estimates the error of the eigenvalues and intensities by employing two different variational principles. | |
calchamil | 18, 8.25, 9.4 | Computes the overlap matrix and - when all autocorrelation functions c0, c1, and c2 are used - also the Hamiltonian matrices. |
calcintensity | 11, 8.12 | Computes the intensities. |
calcintensvec | 19, 8.27, 9.5 | Computes the intensities. |
calckamil | 8.17, 8.18, 8.21, 8.22 |
Computes the first and second order Hamiltonian matrix (when only the autocorrelation function c0 is used). |
chidef | Changes the default of an integer parameter (unless it is specified in the input). | |
chldef | Changes the default of a list parameter (unless it is specified in the input). | |
chrdef | Changes the default of a real*8 parameter (unless it is specified in the input). | |
compulsory | Checks whether a keyword is given in the input file and writes an error message if it is not present. | |
correctenergy | Corrects for the energy shift of the Hamiltonian. | |
cpinput | Writes the input/default parameters to a file. | |
damp | A4, A.35, A.46 | Selects and computes a filter function G. Used when all autocorrelation functions c0, c1, and c2 are employed. |
dampfour | A5, 9.3, 9.15 | Selects and computes the Fourier transform of a damp function g. |
dampfunc | 14, 15, 9.1, 9.13 | Selects and computes a damp function g. |
errormsg | Sends an error message to the screen and stops the program. | |
fcaller | Allocates the memory. | |
freceiver | Contains the second part of the main program which is processed after memory allocation. | |
getauto | Reads a single autocorrelation file. | |
getautolen | Determines the length of the autocorrelation file and computes the propagation time. | |
getexactlen | Determines the number of exact (i.e. comparison) energies and intensities. | |
getinput | Reads a file and removes all blanks and comments. | |
getipara | Returns the integer parameter that belongs to a given keyword in the input file. | |
getlpara | Returns as an integer the position of an input parameter in a list. | |
getrpara | Returns the real*8 parameter that belongs to a given keyword in the input file. | |
getspara | Returns the character string parameter that belongs to a given keyword in the input file. | |
id_filter | Returns a character string containing the PRCS project version. | |
ignorekey | Labels a keyword which is only relevant in combination with another keyword as "ignored" if the other keyword has a "wrong" value. | |
inperr | Writes a wrong input entry and an error message to the screen. | |
kamp1 | A.36 | Selects and computes the filter function F(1). Used for the determining the first order Hamitonian matrix when only the autocorrelation function c0 is employed. |
kamp2 | A.37 | Selects and computes the filter function F(2). Used for the determining the second order Hamitonian matrix when only the autocorrelation function c0 is employed. |
logicalsize | Defines the length in bytes of a logical variable. | |
mygetarg | Reads the command line parameters. | |
myiargc | Returns the number of command line parameters. | |
readauto | Reads all autocorrelation files. | |
readdata | Reads the data file. | |
readexact | Reads the exact (i.e. comparison) energies and intensities from file. | |
readinput | Reads the input file. | |
realsize | Defines the length in bytes of a real variable. | |
shiftimag (fdc only) |
Shifts the imaginary part of the Hamiltonian by correspondingly transforming the autocorrelation functions. | |
trafoenergy | 28 | Shifts the energy window according to the effective Hamiltonian when the autocorrelation functions were generated in a SOD propagation. |
variation | Selects the variational principle. | |
variation1 | 5, 8.8 | Employs the variational principle <psi | H | psi> / <psi | psi>. |
variation2 | 24, 9.9 | Employs the variational principle <psi | (H-s)2 | psi> / <psi | psi>. |
variation3 | 25, 9.10 | Employs the variational principle <psi | (H-s) | psi> / <psi | (H-s)2 | psi>. |
writefauto | 7.11 | Writes the Fourier transform of the autocorrelation function to the fourier file. |
writeenergy | Writes the energies and intensities to the log file. | |
writeparam | Writes the input parameters to the log file. |
Not listed are the library routines.
The program has the following structure (i.e. dependencies between the subroutines or functions), ignoring small matrix manipulation and other library subroutines. All routines in the left column are called from the main program.
readinput | getinput | mygetarg | |
myiargc | |||
getrpara | inperr | ||
getlpara | inperr | ||
getspara | |||
getipara | inperr | ||
getautolen | |||
getdata | |||
chidef | |||
chrdef | |||
chldef | |||
ignorekey | |||
compulsory | inperr | ||
cpinput | |||
getexactlen | |||
allocate | |||
integersize | |||
realsize | |||
fcaller | freceiver | readauto | getauto |
readexact | |||
writefauto | dampfunc | ||
dampfour | |||
trafoenergy | |||
shiftimag (fdc only) | |||
calchamil | damp | ||
calckamil | kamp1 | ||
kamp1 | |||
variation | variation1 | ||
variation2 | |||
variation3 | |||
calcintensvec | dampfunc | ||
calcintensity | |||
calcerror | |||
calcerror2 | |||
correctenergy | |||
writeparam | id_filter | ||
realsize | |||
integersize | |||
writeenergy |
In the filter program the arrays mi, mr and (in the complex symmetric version fdc) mc are dynamically allocated in subroutine fcaller. These arrays store all integer, real*8, and complex*16 data, respectively. In subroutine allocate pointers to the individual positions within mi and mr of the arrays used by the filter program are determined. These pointers are stored in the include file fmemory.inc.
The following bugs are known but have not been fixed yet:
|