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
ONWARDOn to Section 10

TOPBack to the Table of Contents


Maintained by Sheldon Green, agxsg@giss.nasa.gov