9. Subroutines of the MOLSCAT system
Most subroutines in MOLSCAT are extensively commented; see the code for
details. The following descriptions list where the various subroutines are
called from, and in most cases give a brief description of their function.
AIRPRP
Subroutine called by AXSCAT
Airy propagator routine
AIRYMP
Subroutine called by SPROPN
Modulus and phase of Airy functions and derivatives
ASROT
Subroutine called by SET6C
Calculates asymmetric rotor energies and wavefunctions
ASYME
Entry point in subroutine SET6, called by COUPLE
ASYMF
Entry point in subroutine SET6, called by COUPLE
ASYMG
Entry point in subroutine SET6, called by MCGCPL
AXSCAT
Subroutine called by STORAG
Controlling routine for the log-derivative/Airy hybrid propagator
BASE
Subroutine called by DRIVER
Handles generation of basis set
BASE9, BAS9IN, SET9, CPL9, DEGEN9
Subroutine / entry points called from BASE etc.
User-supplied routines to specify a special coupling scheme
BASIN
Entry point in subroutine BASE, called by DRIVER
Initialisation entry for BASE - reads &BASIS data
CHCK6I
Subroutine called by SET6I
Check asymmetric rotor functions for orthogonality
CHECK6
Subroutine called by SET6
Check asymmetric rotor functions for orthogonality
CHKSTR
Subroutine called by DRIVER, etc.
Checks that there is enough storage left in the X array
COLIM
Subroutine called by RMTPRP
CONVRG
Subroutine called by DRIVER.
Performs convergence checking if &INPUT ICONV=1
CORR
Subroutine called by AIRPRP.
Correction terms for Airy propagator
COUPLE
Subroutine called by BASE.
Handles angular momentum coupling elements
CPLOUT
Subroutine called by BASE.
Output routine for angular momentum coupling elements
CPL3
Subroutine called by COUPLE
Coupling matrices for ITYPE = 3
CPL4
Subroutine called by COUPLE; entry CPL24 called from MCGCPL.
Coupling matrices for ITYPE = 4, 24
CPL21
Subroutine called by MCGCPL
Coupling matrices for ITYPE = 21
CPL22
Subroutine called by MCGCPL
Coupling matrices for ITYPE = 22
CPL23
Subroutine called by MCGCPL
Coupling matrices for ITYPE = 23
CPL25
Subroutine called by MCGCPL
Coupling matrices for ITYPE = 25
CPL26
Subroutine called by MCGCPL
Coupling matrices for ITYPE = 26
DAPROP
Subroutine called by AXSCAT (INTFLG = 8), DASCAT (INTFLG = 6).
Propagation routine for the diabatic modified log-derivative method
DASCAT
Subroutine called by STORAG
Controls the diabatic modified log-derivative propagator
DASIZE, DAOPEN, DACLOS, DAWR1, DAWR2, DARD1, DARD2
Subroutine (and entry points)
called by PRBR for in-core simulation of direct access files
DEGENF
Entry point in subroutine BASE, called by OUTPUT
Returns degeneracy factor for denominator of cross-section expressions
DELRD
Subroutine called by VIVAS
Calculates length of next step
DERMAT
Subroutine called by VIVAS WKB
Calculates first or second radial derivative of potential matrix
DGEMUL
Subroutine called from AIRPRP QAPROP RMTPRP STABIL TRNSFM VIVAS
Matrix multiplication (ESSL routine)
DGESV
Subroutine called from DVSCAT STABIL VIVAS YTOK
Solves linear equations (LAPACK routine)
DMSYM
Subroutine called by ASROT
Symmetrizes spherical top wavefunctions
DRIVER
Subroutine called by MOLSCAT main program.
Driver reads &INPUT data and handles the calls to the major routines.
DSYFIL
Subroutine called by AIRPRP LDVIVS RMTPRP TRNSFM WAVVEC YTOK.
Fills in upper or lower triangle of symmetric matrix.
DVFREE
Subroutine called by DVSCAT
Asymptotic matching for DeVogelaere algorithm
DVSCAT
Subroutine called by STORAG.
Main routine for DeVogelaere algorithm
DVSTRT
Subroutine called by DVSCAT
Starts DeVogelaere propagation
EAVG
Subroutine called by DRIVER
Provides energy values suitable for Boltzmann averaging
ECNV
Subroutine called by BASE DRIVER
Handles different possible energy units and returns conversion factor.
ECNVX
Subroutine called by ECNV
Handles character string data values in EUNITS
EPSUM
Subroutine called by OUTPUT
Calculates S-matrix eigenphase sum from K-matrix
ESYMTP
Subroutine called by COUPLE SET6
F02AAF
NAG Subroutine called by WAVEIG.
Eigenvalues of a real symmetric matrix
F02ABF
NAG Subroutine called by ASROT DMSYM EPSUM POTENT QAPROP
RMTPRP SHRINK VIVAS.
Eigenvalues and eigenvectors of a real symmetric matrix
FIND
Subroutine called by SURBAS
Finds potential term coupling two G-vectors in surface scattering
FINDRM
Subroutine called by DRIVER
For IRMSET .gt. 0 option, finds suitable starting point for integration
FINDRX
Subroutine called by DRIVER
Checks that RMAX is beyond centrifugal barrier and increments it if
necessary
FSYMTP
Subroutine called by COUPLE SET6
GASLEG
Subroutine called by GAUSSP
Returns points and weights for Gauss-Legendre quadrature.
GAUSHP
Subroutine called by POTENL (VRTP case)
Returns points and weights for Gauss-Hermite quadrature.
GAUSSP
Subroutine called by IOSBGP
Interface to GASLEG for Gauss-Legendre points and weights
GCLOCK
Subroutine called by DRIVER IOSDRV IOSCLC
Timing routine
GDATE
Subroutine called by DRIVER
Returns character string with current date
GET102
Subroutine called by IOSBIN
Special ITYPE=102 input; dummy version supplied with MOLSCAT
GSYMTP
Subroutine called by MCGCPL SET6
GTIME
Subroutine called by DRIVER
Returns character string with current time of day
HEADER
Subroutine called by DRIVER
Writes or checks a header on the ISCRU scratch file to ensure that it
is compatible with the current run.
HERM
Called by POTENL (VRTP case)
Generates Hermite polynomials
HRECUR
Called by GAUSHP
IDPART
Subroutine called by BASE
Handles identical particle symmetry for ITYP = 3
IOSBGP
Entry point in subroutine IOSBIN, called by IOSDRV
IOSBIN
Subroutine called by BASIN
Processes &BASIS data for IOS cases
IOS1
Entry point in IOSBIN, called by IOSDRV
Sets up points and weights for orientation quadrature
IOS2
Entry point in IOSBIN, called by IOSCLC
Initializes values for the propagator in IOS cases
IOSCLC
Subroutine called by IOSDRV
Main control of IOS: loops over energies and orientations and
accumulates generalized IOS cross sections
IOSDRV
Subroutine called by DRIVER
Sets up storage for IOS cases and then calls IOSCLC
IOSOUT
Subroutine called by IOSCLC
Outputs IOS generalized and state-to-state cross
sections
IOSPB
Subroutine called by IOSCLC
Calculates pressure broadening cross sections for IOS cases
IPASYM
Subroutine called by SET6
Checks symmetry of asymmetric rotor coefficients (ITYPE = 6)
ISUTP
Subroutine called by IOSCLC
IVCHK
subroutine checks compatibility of symmetries with IV() indexing.
IXQLF
Entry point in subroutine IOSBIN, called by IOSOUT IOSPB SIG6
J3J000
Subroutine called by COUPLE, CPL21, SET6.
Recursive routine for Wigner 3-j symbols with zero projections
J6TO4
Subroutine called by SET4; converts JLEV from ITYPE=6 to ITYPE=4 format.
J6J
Subroutine called by COUPLE J9J SET6 SIXJ
Recursive routine for Wigner 6-j symbol
J9J
Subroutine called by XNINEJ
Recursive routine for Wigner 9-j symbol
KSYM
Subroutine called by YTOK
Forces symmetry on K matrix
KTOS
Subroutine called by DASCAT DVSCAT LDVIVS QASCAT RMTPRP
Converts the real symmetric K matrix into the S matrix
LDPROP
Subroutine called by LDVIVS
Log-derivative propagator
LDVIVS
Subroutine called by STORAG
Controls the hybrid log-derivative/VIVS propagator
MASK
Called by DRIVER
Machine-dependent code to suppress floating-point underflows
MAXMGV
Called by POTENT
Maximum magnitude element of a vector
MCGCPL
Subroutine called by BASE
Handles angular momentum coupling for McGuire-Kouri coupled states
approximation
MHAACK
Subroutine called by DRIVER
Prints a citation request for the HIBRIDON propagator
NEXTE
Subroutine called by DRIVER
Estimates next energy set in resonance search option
ODPROP
Subroutine called by DASCAT
Single-channel implementation of diabatic modified log-derivative
propagator
ORDER
Subroutine called by FIND
Takes account of lattice symmetry for Fourier components of
atom-surface potential
OUTERR
Entry point in subroutine OUTPUT, called by DVSCAT
OUTINT
Entry point in subroutine OUTPUT, called by DRIVER
Initialisation entry for OUTPUT
OUTMAT
Subroutine called by AIRPRP
Read or write transformation matrix
OUTPCH
Entry point in subroutine OUTPUT, called by DRIVER
OUTPUT
Subroutine called by DRIVER
Outputs S-matrices etc. and calculates state-to-state cross sections
PARITY
Function called by BASE COUPLE CSRTRT ESYMTP FCOEF
FSYMTP GSYMTP MCGCPL PRBR ROTROT SET6 THREEJ
Returns (-1)**argument
PERT1
Subroutine called by VIVAS
Calculates perturbation corrections for VIVAS propagator
PERT2
Subroutine called by VIVAS
Calculates perturbation corrections for VIVAS propagator
PLM
Subroutine called by IOSBIN
Calculates associated Legendre polynomials
POTENL
Subroutine called by DRIVER, WAVMAT, DERMAT, ODPROP.
Evaluates intermolecular potential at distance R. See
Section 5 for specifications.
POTENT
Subroutine called by AIRPRP
Calculates wavevector matrix and diagonalises average potential
POTIN9
Routine called by POTENL for ITP=9; if used, dummy version must be
replaced with appropriate user-supplied routine.
PRBOUT
Entry point in subroutine PRBR, called by DRIVER
PRBR
Subroutine called by DRIVER
Handles calculation of pressure broadening cross sections
PRBR3
Subroutine called by PRBR
Pressure broadening code for ITYPE = 3
PRBR3R
Entry point in subroutine PRBR3, called by PRBR
PRBRIN
Entry point in subroutine PRBR, called by DRIVER
Initialisation entry for PRBR
QAPROP
Subroutine called by QASCAT
Propagation routine for the quasiadiabatic modified log-derivative
method (INTFLG = 7)
QASCAT
Subroutine called by STORAG
Controls the quasiadiabatic modified log-derivative propagator
QSYMTP
Subroutine called by CPL4; matrix elements for ITYPE = 4
RBES
Subroutine called by DASCAT DVFREE QASCAT RMTPRP
Generates Riccati-Bessel functions
RDPCH
Subroutine called by OUTPUT
Outputs cross sections
RMSBF
Subroutine called by YTOK
Ratio of derivative to function value for modified spherical bessel
functions of the third kind
RMTPRP
Subroutine called by STORAG
Main routine for R-matrix propagator algorithm
RSYM
Subroutine called by DVSCAT
Forces symmetry on K-matrix in DeVogelaere algorithm
RSYMTP
Subroutine called by CPL4; matrix elements for ITYPE = 24
SCAIRY
Subroutine called by AIRYMP
Scaled Airy function and derivatives
SET1
Entry point in subroutine SETBAS, called by BASE
Handles basis set and energy levels for ITYP = 1
SET2
Entry point in subroutine SETBAS, called by BASE
Handles basis set and energy levels for ITYP = 2, 7
SET3
Entry point in subroutine SETBAS, called by BASE
Handles basis set and energy levels for ITYP = 3
SET4
Subroutine for ITYP = 4 basis functions, called by BASE
SET5
Entry point in subroutine SETBAS, called by BASE
Handles basis set and energy levels for ITYP = 5
SET6
Subroutine called by BASE
Handles basis set and energy levels for ITYP = 6
SET6C
Subroutine called by SET6
Generates asymmetric rotor basis sets from rotational constants
SET6I
Subroutine called by IOSBIN
IOS version of SET6
SET8
Entry point in subroutine SURBAS, called by BASE
Handles basis set and energy levels for ITYP = 8
SETBAS
Name of subroutine containing SET1 - SET5
SGNCHK
Subroutine called by RMTPRP
Ensures consistency of eigenvector signs from one R step to the next
SHRINK
Subroutine called by RMTPRP
Performs basis set contraction for R-matrix propagator algorithm
(ISHRINK .gt. 0 option)
SIG6
Subroutine called by IOSOUT
Handles ITYP = 6 cross sections for IOS case
SIXJ
Function called by FCOEF, FSYMTP, PRBR, PRBR3, ROTROT.
Calculates Wigner 6-j symbol
SPROPN
Subroutine called by AIRPRP
Diagonal propagator for Airy method
STABIL
Subroutine called by DVSCAT
Stabilisation routine for DeVogelaere algorithm
STEFF
Subroutine called by FINDRM
Steffensen iteration for accelerated convergence on RMIN
STORAG
Subroutine called by DRIVER, IOSCLC.
Sets up storage for and calls a propagator; all calls to propagators
are currently done through STORAG
STRY
Subroutine called by RMTPRP
Tests whether eigenvectors of potential are changing slowly enough to
end R-matrix propagation
STSRCH
Called by ECNVX
SURBAS
Subroutine called by BASE
Handles basis set for surface scattering (ITYPE = 8)
SWRITE
Subroutine called by OUTPUT.
Writes unformatted S matrix to unit ISAVEU.
SYMINV
Subroutine called by DAPROP KTOS LDVIVS LDPROP QAPROP RMTPRP
Calculates the inverse of a real symmetric matrix
THREEJ
Function called by COUPLE CSRTRT FCOEF FSYMTP MCGCPL ROTROT
Calculates Wigner 3-j symbol with all projections zero
THRJ
Function called by CSRTRT ESYMTP FSYMTP GSYMTP MCGCPL PRBR PRBR3
Calculates Wigner 3-j symbol with no restriction on projections
TRNSFM
Subroutine called by AIRPRP POTENT QAPROP RMTPRP SHRINK VIVAS
Performs a similarity transform
TRNSP
Subroutine called by AIRPRP POTENT QAPROP RMTPRP SHRINK
Transposes a matrix
VINIT
Subroutine called by the general-purpose version of POTENL.
Initialises for calls to potential routines VSTAR, VSTAR1 and VSTAR2.
See Section 4.2.
VIVAS
Subroutine called by LDVIVS
VIVAS propagator
VRTP
Subroutine called by general-purpose version of POTENL.
User-supplied routine which may be called to evaluate an interaction
potential which is not expanded in angular functions. See
Section 4.3.
VSTAR, VSTAR1 and VSTAR2
User-supplied routines which may be called by the general-purpose
version of POTENL to evaluate the interaction potential and its first
and second derivatives respectively. If used, dummy version must be
replaced by an appropriate user-supplied routine.
See Section 4.2.
WAVEIG
Subroutine called by AIRPRP
Get eigenvalues of potential matrix
WAVMAT
Subroutine called by DAPROP DERMAT DVSCAT DVSTRT HEADER
LDPROP POTENT QAPROP RMSET RMTPRP VIVAS WKB
Calls POTENL to obtain potential coefficients, and forms potential
matrix for scattering routines.
WAVVEC
Subroutine called by WAVMAT DERMAT
Efficient routine to handle vector products required by WAVMAT
WKB
Subroutine called by STORAG
WKB propagator for one channel problems
XNINEJ
Function called by CSRTRT ROTROT
Calculates Wigner 9-j symbol
YRR
Function called by IOSBIN. Computes
bispherical harmonics for two linear rotors
YTOK
Subroutine called by LDVIVS, RMTPRP.
Calculates the K matrix from the log-derivative matrix
ZBES
Called by GASLEG
On to Section 10
Back to the
Table of Contents
Maintained by Sheldon Green, agxsg@giss.nasa.gov