MOLSCAT User's Manual

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.


Forward to. Section 10

Back to. Section 8

Back to the. Table of Contents