If MOLSCAT terminates with the message
CHKSTR. CANNOT PROVIDE REQUESTED STORAGE.
then it is usually sufficient to modify the main program to increase the
parameter MXDIM and recompile.
For compilers that do not provide NAMELIST, it is usually possible to simulate it using other compiler extensions. Code for doing this is provided in commented-out form in the routines that read data, and the extra routines needed are available from JMH.
Take care that the routine used does not use excessive CPU time. For example, the routine ERRSET can be very expensive indeed on some IBM machines, because a complicated error-handling routine is called every time floating-point underflow occurs; if available the IBM VS FORTRAN, CALL XUFLOW(0), is generally preferable.
If possible, you should run MOLSCAT using LAPACK routines that are optimised for your particular computer. However, if this is not possible, you can obtain FORTRAN versions of the LAPACK routines from a NETLIB server: simply send an email message containing a line such as
send dsyevx from lapack
to a NETLIB server such as netlib@ornl.gov (Oak Ridge National Lab) to obtain
the source for the LAPACK routine DSYEVX.
The LAPACK routines use BLAS (basic linear algebra subroutines) as much as possible. BLAS level 1, level 2 and level 3 routines exist. You should use BLAS routines optimised for your particular computer if possible. However, if no optimised routines are available, you can get FORTRAN versions of the BLAS from a NETLIB server by sending an email message containing a line such as
send dblas2 from core
to obtain the double-precision level 2 BLAS routines.
It is important that any user who implements new options in MOLSCAT should perform matrix operations by calls to the routines described below, both for ease of maintenance and to simplify the creation of efficient versions for other computers.
DGEMUL Matrix multiplication DGESV Solve linear equations SYMINV Invert symmetric matrix F02AAF Diagonalise symmetric matrix without eigenvectors F02ABF Diagonalise symmetric matrix with eigenvectorsMOLSCAT also calls BLAS (basic linear algebra subroutines) such as DAXPY, DDOT etc (or single precision SAXPY, SDOT etc in the CRAY version) in many places.
Subroutine ODPROP (for efficient single-channel propagation) also requires special treatment for vectorisation to be achieved, and there is a special version of this routine for CRAYs and similar machines.
Note that MOLSCAT really does require matrix inversion, despite the usual rule to use linear equation solvers instead. This is because the propagators involved save information from one step to the next, and this advantage is lost if the problem is formulated in terms of linear equation solvers.
The OPEN statements do not use FILE='fname' parameters and you will have to provide files with the naming convention for your system. For example, IBM OS/MVS and CMS use FTnnF001 as the filename for UNIT=nn; IBM AIX uses filename fort.NN.
The following files may be used by MOLSCAT, depending on the value of parameter in the &INPUT data set.
unit formatted use
------ --------- ------------------------
ISCRU no Propagator scratch unit
used if ISCRU .ne. 0
ISAVEU no S-matrix file written if
ISAVEU .gt. 0
ISIGU yes,DA Updated cross section file
if ISIGU .gt. 0
KSAVE yes Saved values for resonance
search if KSAVE .gt. 0
In the VAX implementation, it is also convenient to OPEN the main data file and
a supplied ISCRU file with the keywords SHARED and READONLY, so that several
jobs can access them simultaneously. The resulting OPEN statements are
nonstandard, and are commented out in the distribution version of MOLSCAT.
MOLSCAT always writes state-to-state cross sections (card images) to unit 7 at the end of a run, and it is necessary to supply a (system dependent) dummy data set if this output is not wanted.
On to the References