Source Code Files

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.

Library Routines

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

Routine Description

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 methodJ. 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.

Program Structure

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  

Arrays and Pointers

In the filter program the arrays  mi, mr  and (in the complex symmetric version fdcmc  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.

Bugs

The following bugs are known but have not been fixed yet:

  • If a computed and a comparison (see The Comparison File) eigenvalue are identical up to machine precision, the computed eigenvalue is mistakenly labeled spurious in the Log File and not written to the Eigenenergy File.