      SUBROUTINE VERSION(CSTAMP)
      IMPLICIT NONE
C Arguments:
      CHARACTER CSTAMP*22
      CSTAMP='DDSCAT 6.1 [08.06.23]'
C*******************************************************************************
C History of major changes to DDSCAT package:
C 90.12.21 (BTD): Added code to DDSCAT to create output files
C                 'qtable' (summary of Q values)
C                 'mtable' (summary of diel. func. for material 1)
C 91.08.14 (BTD): Add QBKSCA to arg. list for GETFML
C                 Modify code to print out Q_bk
C 91.08.15 (BTD): Provide different headings for qtable depending on
C                 whether IORTH=1 or 2 (add statement 9043 to DDSCAT).
C 91.09.17 (BTD): Remove calls to ALPHA and EVALA in DDSCAT (needed to 
C                 move these to subroutine GETFML since alpha from Lattice
C                 Dispersion Relation depends on propagation direction
C                 and polarization state)
C                 Add CALPHA,CXEPS,ICOMP,MXCOMP to argument list for
C                 GETFML (information required by ALPHA)
C 91.11.12 (BTD): Added variable IDVSHP to argument list for TARGET
C                 (device number for REASHP to use in reading shape file)
C 93.01.15 (BTD): Modified DDSCAT to divided output file qtable into 2 files:
C                 qtable (containing Q_ext,Q_abs,Q_sca,g,Q_bk) and
C                 qtable2 (containing Q_pha, Q_pol, Q_cpol)
C 93.01.16 (BTD): Modify DDSCAT so that qtable, qtable2, and mtable are closed
C                 after writing, and reopened for each new write
C 93.01.20 (BTD): Add MXNX, MXNY, MXNZ to argument list for subroutine
C                 EXTEND to permit checking of target size against
C                 maximum allowed dimensions
C 93.03.11 (BTD): Deleted all code associated with unused variable
C                 CMACHN (originally included to identify machine/OS)
C 93.03.12 (BTD): Changed CDESCR*60 -> CDESCR*67
C                 Moved WRITE(IDVOUT,9010) to subr. TARGET
C 93.06.02 (BTD): Corrected error in FORMAT statement 9045 in DDSCAT
C 93.06.03 (BTD): Corrected error in computation of angle-averaged
C                 backscattering cross section QBKSUM(JO) in DDSCAT (had
C                 neglected to reset sum to zero for each new target).
C 93.09.28 (BTD): Add "fix" in DDSCAT.f to work around Sun compiler/OS 
C                 bug (see description below.
C 93.12.15 (BTD): Corrected calculation of PPOL in DDSCAT.f  Added 
C                 comments on correspondence between our notation and
C                 elements of 2x2 amplitude scattering matrix and 4x4 
C                 Mueller scattering matrix.
C 94.01.27 (BTD): Replaced SHPAR1,SHPAR2,SHPAR3 by SHPAR(1-6) to
C                 allow up to 6 shape parameters in DDSCAT, REAPAR, 
C                 TARGET.
C 94.06.20 (PJF): Version 4c.1:
C                 Modifications to various routines to support use of
C                 GPFA FFT code of Temperton by specifying option
C                 NEWTMP in ddscat.par.  Changes made in
C                 cxfft3, eself, extend, reapar
C                 Add FFT timing code TSTFFT to distribution.
C                 Change made to timeit_xxx routines for compatibility
C                 with TSTFFT
C 94.12.20 (BTD): Add subroutine VERSION to consolidate log of
C                 significant changes to DDSCAT package.
C 95.04.07 (BTD): REASHP: Changed CDESCR*60->CDESCR*67 for compatibility
C                         with calling routine TARGET
C                 TARCYL: corrected error in code
C 95.05.15 (BTD): REASHP: Corrected READ statement
C                         added module for inhomogeneous/anisotropic
C                         targets.
C 95.05.26 (BTD): REAPAR: corrected construction of orthogonal
C                         polarization when E01 is complex (e.g.,
C                         circular polarization).
C 95.06.14 (BTD): REAPAR: added code to check that user is not requesting
C                         computation of f_ml when using other than
C                         linearly polarized E01
C 95.06.14 (BTD): Version 5a.1: first development
C                 Differs from version 4d in computing:
C                 full radiation pressure force (transverse components,
C                 in additional to longitudinal component computed
C                 previously);
C                 Torque due to scattering and absorption of radiation
C                 as measured by "vector torque cross section".
C                 Changes made in:
C                 DDSCAT
C                 GETFML (including argument list)
C                 SCAT (including argument list)
C                 VERSION (CSTAMP is now CHARACTER*22, so that a date
C                    can be attached to version number)
C 95.06.15 (BTD): Added CXE to argument list of SCAT
C                 Added new control parameters
C                 CMDSOL (to choose solution method)
C                 CMDTRQ (to choose whether or not to compute torques)
C 95.06.20 (PJF+: Major modification of DDSCAT and GETFML to support
C           BTD): use of modular iterative solvers (e.g., CCGPACK and
C                 PIM routines).
C               : add CMDSOL to argument list to specify method
C                 of solution, with "supported" options
C                 PETRKP = Petravic&Kuo-Petravic CCG routine (from 
C                          CCGPACK, coded by P.J. Flatau based on 
C                          earlier code by B.T. Draine)
C                 PBCGST = Preconditioned Biconjugate Gradient with 
C                          Stabilization (from PIM package, coded by
C                          R. Dias da Cunha and T. Hopkins)
C               : add CMDTRQ to argument list of REAPAR and GETFML
C 95.07.21 (BTD): Major revision to subroutine SCAT
C                 Added additional scratch arrays to DDSCAT,GETFML,SCAT
C 95.07.24 (BTD): Corrected errors in SCAT
C 95.08.14 (BTD): Modified GETFML and PROGRESS to include
C                 COMMON/NORMRES/ERRSCAL to allow renormalization of
C                 error |Ax-b| relative to |b|.
C 96.01.05 (BTD): Version 5a.2:
C                 Differs from version 5a.1 in including
C                 shape options BLOCKS and DW1996, including
C                 automatic calculation of principal axes A1 and A2
C                 with largest and second-largest moment of inertia
C                 eigenvalue and eigenvector problem is solved using
C                 routines BALANC, BALBAK, EIGV, ELMHS0, ELTRN0, HQR2,
C                 IPMPAR, and SPMPAR taken from the Naval Surface 
C                 Warfare Center Library of Mathematics Subroutines.
C 96.01.25 (BTD): Added shape option TWOSPH (routine TAR2SP, and
C                 modifications to TARGET,REAPAR).
C 96.02.23 (BTD): Subroutine PRINAXIS now carries out calculation of
C                 principal axes and eigenvalues of moment of inertia
C                 for arbitary grain shape (if invoked by appropriate
C                 "target generation" subroutine), and prints out
C                 3 principal axes and eigenvalues
C 96.10.17 (BTD): Version 5a.3: 
C                 Added NAT0 to argument list for routine ALPHA.
C                 This required modification of ALPHA and GETFML.
C 96.10.18 (BTD): Changed NEWTMP to GPFAFT (for Generalized Prime
C                 Factor Algorithm for Fourier Transform).
C 96.11.06 (BTD): Version 5a.4:
C                 Removed code from DDSCAT and moved to subroutines
C                 GETMUELLER and WRITESCA
C                 Changed definition of scattering angle phi.
C                 Previously, phi was measured from plane containing
C                 incident k vector and Re(CXE01)
C                 Henceforth, phi is measured from Lab x,y plane
C                 (incident radiation is along x axis).
C                 This involved changes to SCAVEC
C                 Modified GETMUELLER so that for IORTH=2 it
C                 automatically computes the complete Mueller scattering
C                 matrix for each target orientation, and for the
C                 orientational average.
C                 Modified WRITESCA so that it writes out selected
C                 elements of the Mueller matrix.
C 96.11.14 (PJF): Add timers(mxtimers), ntimers to DDSCAT and getfml
C                 timers contains information about CPU times of 
C                 various parts of the code and informations needed
C                 for timming (e.g. number of iterations)
C                 Further changes of "WRITESCA" to include binary
C                 file option. This should be of use, for example, 
C                 for users of IDL.
C                 Added "cbinflag" to DDSCA, reapar. Added
C                 "cbinfile", "iobin" and "open" unformatted file in DDSCAT
C                 "close(iobin) in DDSCAT.
C                 Removed "getset" routine. Hardwired "ioerr" in
C                 "errmsg", and "ioout" in "wrimsg". 
C                 Combined all "rotation" code in rot.2
C                 Added dd.pro package for DDSCAT output postprocessing.
C                 The package includes IDL reading code of binary
C                 DDSCAT file and Bohren and Huffman Mie routine coded in IDL.
C                 Added 10,000 lines of LAPACK code to solve 3x3
C                 eigenvalue problem. Removed NSWC l(eispack)
C                 driver because (a) it contains ald r1mach
C                 tedious to support code (b) because LAPACK is
C                 more modern. 
C                 Add several *.ps files to doc and BibTeX
C                 bibliography of recent DDA references.
C 96.11.15 (PJF): Added NetCDF binary option to "writesca.f"
C                 One needs "include" in writesca.f which is non-standard
C                 in FORTRAN77 but will probably work on all architectures.
C                 Also -lnetcdf flag is needed during the loading step
C                 if NetCDF is being used. Otherwise  "empty" NetCDF routines
C                 should be substittuted to satisfy loader (c.f. dummynetcdf.f)
C                 "ncclose" is executed from DDSCAT.f instead of writesca.f
C                 NetCDF is available from http://www.unidata.ucar.edu/
C                 for most popular computers. 
C                 Added "writebin.f" and "writecdf.f" for 5a7
C 96.11.21 (BTD): moved NCCLOS to WRITENET so that all dependence on
C                 netCDF is through subroutine WRITENET
C                 This required changes to DDSCAT,WRITESCA, and
C                 WRITENET, and adding additional call to WRITESCA
C                 from DDSCAT, and additional call to WRITENET from
C                 WRITESCA
C                 added variable IDVOUT2 to COMMON/NORMERR to permit
C                 device number for standard output to be passed to
C                 subroutine PROGRESS
C 96.12.02 (BTD): Corrected error in DDSCAT.f : SMORI was not
C                 initialized, and hence was incorrect except (possibly)
C                 for first wavelength and radius.
C                 Also eliminated some superfluous variables from
C                 DDSCAT.f
C 97.04.28 (BTD): Corrected bug in TARHEX: NAT was not initialized to 0
C 97.06.04 (BTD): Corrected bug in TARGET, affecting only target option
C                 "UNICYL" (target composition was not being set
C                 correctly).
C 97.07.24 (BTD): Corrected bug in GETMUELLER: was using PHI rather
C                 than PHIN in computation of amplitude scattering
C                 matrix and Mueller matrix from f_ml computed by
C                 GETFML.  Required change in GETMUELLER argument,
C                 list, with corresponding change required in DDSCAT.f
C                 Also corrected bugs in GETMUELLER pertaining to
C                 computation of Mueller matrix elements S_14 and
C                 S_31.  Note that because S_31 was incorrect, PPOL
C                 (evaluated in WRITESCA) was numerically incorrect.

C --------------- begin creation of version 6.0 -----------------------
C                 continuing to support "public" version 5a7 while
C                 carrying on private development of version 6.0
C ---------------------------------------------------------------------
C 98.01.01 (BTD): Version 6.0, with capability of using noncubic
C                 rectangular lattices.  Extensive changes required,
C                 because polarizability tensor will now be nondiagonal
C                 even when dielectric tensor is isotropic.
C                 Changes include following modules:
C                    DDSCAT
C                    ALPHA
C                    CMATVEC (in cprod.f)
C                    CPROD
C                    ESELF
C                    EVALA
C                    EVALE
C                    EVALQ
C                    GETFML
C                    MATVEC (in cprod.f)
C                    PRINAXIS
C                    REASHP
C                    SCAT
C                    TARELL
C                    TARGET
C                    TARBLOCKS
C                    TARCEL
C                    TARCYL
C                    TARHEX
C                    TARREC
C                    TARTET
C                    TAR2EL
C                    TAR3EL
C                    TAR2SP
C                 and additional module
C                    NONCUBIC (called by subroutine ALPHA)
C 98.01.20 (BTD): Modified subroutine ALPHA to use (and print out)
C                 constant C4 in evaluation of first-order corrections
C                 to alpha.
C 98.03.10 (BTD): Changes to:
C                    ERRMSG
C                    REAPAR
C                    TAR2EL
C                    TAR2SP
C                    TAR3EL
C                    TARBLOCKS
C                    TARCEL
C                    TARELL
C                    TARHEX
C                    TARTET
C 98.04.27 (BTD): Minor changes made in
C                    ALPHA
C                    CGCOMMON
C                    EVALQ
C                    GETFML
C                    NONCUBIC
C                    PRINAXIS
C                    RESTORE
C                    TARCYL
C                    TARGET
C 98.10.07 (BTD) Rewrote cgcommon.f, function SCNRM2,
C                because g77 optimization generates bad code
C                complicated code replaced with simple code
C -------------- [separate creation of version 5a9 at this time] ----
C 98.10.08 (BTD) modified cgcommon.f, subroutine PROGRESS,
C                to keep track of minimum error, and to
C                note when new error minimum is attained.  This is
C                to observe convergence behavior of PBCGST.
C 98.10.26 (BTD) modified subroutine PROGRESS in cgcommon.f
C                to also print information on
C                rate of convergence (variable RATE).
C 98.10.27 (BTD) modified subroutine SMACHCONS in cgcommon.f
C                because Solaris compiler complained about value of
C                OVERFLOW parameter.  Reduced by factor 2
C 98.11.16 (BTD) Corrected error in value of CXE01R passed to WRITEBIN
C                for binary write option.
C 98.12.07 (BTD) Found and corrected bug reported by Timo Nousiainen 
C                (tpnousia@lumi.meteo.helsinki.fi) which caused Mueller
C                matrix elements S_12 and S_13 to be computed 
C                due to inconsistency in definition of f_ml.  Removed
C                code in GETFML which had been inserted to change
C                f_ml to refer to "usual" incident pol states l=1,2
C                whereas GETFML assumed that incident pol states
C                l=1,2 were those specified by the user in ddscat.par
C                Stick with this latter convention.
C                Modified GETMUELLER so that Mueller matrix elements
C                are computed correctly even when user-specified
C                incident polarization state CXE01 is not linearly
C                polarized.
C 98.12.07 (BTD) Edited UserGuide to give more detailed (and now correct)
C                discussion of computation of Mueller matrix elements
C                from the f_ml.
C 98.12.07 (BTD) Inserted (commented out) code into getfml to allow
C                verification of final error in approximate solution
C                to confirm reliability of error reported by iteration
C                machinery.  After confirming that these errors appear
C                to be reasonable, code was commented out, but can be
C                reactivated at future date if repetition of such tests
C                is desired.
C 98.12.16 (BTD) In getfml.f, increase upper limit on iterations from
C                300 to 10000
C 99.01.26 (BTD) Modified DDSCAT.f and reapar.f to allow user to specify
C                first IWAV,IRAD,IORI (normally 0 0 0).  This allows
C                one to restart calculational runs which abort after
C                doing only some of the desired wavelengths, radii,
C                and orientations.  Note: structure of ddscat.par is
C                changed as a result!
C 99.03.01 (BTD) rewrote subroutine orient.f to make it handle odd
C                NTHETA as described in the UserGuide
C 99.03.05 (BTD) corrected errors in new orient.f
C 99.04.30 (BTD) corrected new errors in orient.f (introduced in
C                99.03.05 revision)
C 99.06.30 (BTD) modifications to reapar (was not reading correct 
C                number of SHPAR values for case TWOSPH) and tar2sp 
C                in order to deal correctly with two spheroid case.
C                (Although have not yet implemented changes necessary
C                to do TWOSPH with noncubic lattice.)
C------------------------------------------------------------------------
C 00.06.12 (BTD) [Separate release of version 5a10 at this time]
C------------------------------------------------------------------------
C 00.06.12 (BTD) New target option NSPHER supported by routine TARNSP
C                Replaced old LAPACK source code with latest version
C                of routines from www.netlib.org
C                New LAPACK routines required by PRINAXIS are now
C                collected in two files, lapackblas.f and lapacksubs.f
C                with new LAPACK routines, PRINAXIS now executes properly
C                when compiled with g77
C                To support TARNSP, it was necessary to modify argument
C                lists for REAPAR and TARGET to include character
C                variable CFLSHP to pass name of file containing
C                description of multisphere target
C                Minor "tidying" of a number of files to make
C                all data type conversion explicit.
C                All variables in CXFFT3 now declared explicitly.
C 01.04.21 (BTD) copied over changes made to REASHP in version 5a10
C                modified all target routines so that in all cases
C                the target.out file created when using CALLTARGET
C                will contain composition information, so that there
C                is now a standard format for shape.dat input files
C                Modified as-delivered REASHP to read ICOMP.
C 01.04.21 (BTD) copied over changes made to TARNSP to correct bug
C                in version 5a10
C 02.02.12 (BTD) added support for target option PRISM3, with
C                new routine TARPRSM and concomitant changes to
C                TARGET and REAPAR
C 02.11.15 (BTD) working with Matthew Collinge to add MPI capability to
C                code.
C                DDSCAT.f now calls
C                       MPI_INIT
C                       MPI_COMM_RANK
C                       MPI_COMM_SIZE
C                       MPI_FINALIZE
C                created new module mpi_subs.f with following routines:
C                    SUBROUTINE COLSUM, which calls MPI_REDUCE
C                    SUBROUTINE SHARE1, which calls MPI_BCAST
C                    SUBROUTINE SHARE2, which calls MPI_BCAST
C                for use on systems where MPI is not installed,
C                created new module mpi_fake.f with dummy routines
C                    SUBROUTINE MPI_INIT
C                    SUBROUTINE MPI_COMM_RANK
C                    SUBROUTINE MPI_COMM_SIZE
C                    SUBROUTINE MPI_BCAST
C                    SUBROUTINE MPI_REDUCE
C                    SUBROUTINE MPI_FINALIZE
C                so that calls to these subroutines can remain in
C                the code.
C 03.02.13 (BTD) added 1 more digit of precision to qtable and qtable2
C                outputs
C 03.04.13 (BTD) working with Matthew Collinge to add MPI capability to
C                added character variable CFFLOG to contain name of
C                running output file
C                added routine NAMID to generate a unique name for output
C                file printed by each MPI-spawned process.
C                output to logfile is no longer unbuffered (if required
C                for debugging purposes, this can be reactivated -- see
C                comments in DDSCAT.f
C                added variables ITNUM(2) and MXITER to argument lists
C                for GETFLM and WRITESCA
C 03.07.13 (BTD) added new variable ITNUMMX(2) to DDSCAT so that
C                waarbbori.avg file will contain *maximum* number of
C                iterations required by any of the orientations being
C                averaged over
C 03.08.01 (BTD) version 6.0 released
C 03.10.24 (BTD) Modifications for version 6.1:
C                Changed method used for choosing scattering 
C                directions for calculation of radiation force and 
c                torque.
c                * Eliminate use of ICTHM and IPHIM -- these are
c                  removed from many argument lists, and are no longer 
c                  read from file ddscat.par
c                * Add variable ETASCA to control angular resolution
c                  used for angular averaging.  ETASCA is now input
c                  from file ddscat.par, and passed to subroutines
c                  GETFML, SCAT, and WRITESCA
c                * Add variable NAVG to record number of scattering 
c                  directions used.  Pass NAVG from SCAT to GETFML to
c                  DDSCAT to WRITESCA to WRITENET and WRITEBIN
c                * Add code to calculate <cos^2> in SCAT, and pass
c                  variable CSCAG2(2) from SCAT to DDSCAT to WRITESCA
c                * Modify output format of qtable, wxxrxxkxxx.sca,
c                  and wxxrxxori.avg to report NAVG
c 03.10.30 (BTD) corrected typo in WRITENET
c 04.02 22 (BTD):Modifications to writenet:
c                 * add QEXSUM,QABSUM,QSCSUM,QBKSUM,QPHSUM,QSCGSUM,
c                       QTRQABSUM,QTRQSCSUM
c                   to argument list
c                 * add various quantities (e.g. Qext) averaged over
c                   polarization to netcdf output when IORI>0
c                 * add various quantities (e.g. Qext) averaged over
c                   orientation (and polarization)
c                   to netcdf output when IORI=0
c                 * reorganize netCDF output following experimental
c                   version ver6.01
c 04.02.22 (BTD) added IWRKSC to argument list of WRITESCA and use to
c                control writing to ascii output files
C 04.02.25 (BTD) corrected typo in TARPRSM
c 04.03.04 (BTD) modified ESELF (eself.f) so that when called with target
c                option NSPPBC, will create A matrix using truncated
c                summation over a periodic lattice of targets.
c                Added new parameter NPMX to control how many periods to
c                include in summation
c                added NPMX to COMMON/M6/ in
c                * ALPHA in alpha.f (dummy)
c                * DIAGL, MATVEC, and CMATVEC in cprod.f
c                * DDSCAT in DDSCAT.f
c                added DUM13,DUM14 to COMMON/M6/ in alpha.f
c 04.03.31 (BTD) modified LAPACK routine SLAMC1 so that it behaves
c                as intended even after optimization by pgf77.  Note
c                that fix presumes that arithmetic is base 2.
c 04.04.01 (BTD) * added calls to TARGSPHER in subroutine TARGET
c                * added DX to argument list of TARGSPHER
c                * added arguments NPY,NPZ to support periodic b.c.
c                  option (at present time, used only for target option
c                  NSPPBC)
c                * added code to REAPAR to support option NSPPBC
c 04.04.04 (BTD) * added NPY,NPZ to argument list of TARGET
c                   and in call to TARGET from DDSCAT
c                * added variables to argument list of fake version of
c                  WRITENET in dummywritenet.f
c                * reorganize file mpi_subs.f so that mpi_subs includes
c                   SUBROUTINE COLSUM
c                   SUBROUTINE SHARE1
c                   SUBROUTINE SHARE2
c                  and mpi_fake.f includes dummy versions of
c                   SUBROUTINE COLSUM
c                   SUBROUTINE SHARE1
c                   SUBROUTINE SHARE2
c                   SUBROUTINE MPI_INIT
c                   SUBROUTINE MPI_COMM_RANK
c                   SUBROUTINE MPI_COMM_SIZE
c                   SUBROUTINE MPI_FINALIZE
c                  Subroutine mpi_subs is no longer used in "plain"
c                  version -- all the ersatz MPI calls used by DDSCAT
c                  are supplied in mpi_fake.f
c 04.04.29 (BTD) Added target option ANIREC (homogeneous anisotropic
c                rectangular target
c                To accomplish this, modified subroutines
c                  REAPAR
c                  TARGET
c                and added new routine
c                  TARANIREC
c 04.05.21 (BTD) Fixed bug in DDSCAT.f: one of the calls to WRITESCA
c                had QSCGSUM and QSCG2SUM in incorrect order.
c 04.05.22 (BTD) Fixed bug in computation of true error in getfml.f
c 04.05.23 (BTD) Added CWHERE string in reapar.f to provide helpful 
c                information to user in event of malformed ddscat.par
c                file
c 04.12.29 (BTD) Corrected error in WRITESCA: when IWRKSC=1, had not 
c                been writing out correct values of Mueller matrix to 
c                wxxrxxkxxx.sca files. (Output error only: wrong 
c                variable in WRITE statement. No computational error 
c                involved.)
c 05.03.19 (BTD) REAPAR modified:
c                Added 2 lines to set CLFEPS(1) in case using options
c                H2OLIQ or H2OICE (previously were left undefined,
c                which cause problems with output statement)
c 05.03.29 (BTD) ROTATE modified:
c                Added code to guard against roundoff errors leading to
c                argument of ACOS with abs(arg)>1
c 05.10.11 (BTD) Modified NAMER, DDSCAT, WRITESCA to change filenames
c                to allow up to 1000 wavelengths instead of 100
c                filenames are now longer by one character, and of form
c                w000r00k000.sca and w000r00ori.avg
c 05.10.18 (BTD) Modified DDSCAT.f to allow use of more than 1000
c                orientations if IWRKSC=0 (previously would exceed array
c                limits in subroutine NAMER with IORI>1000).
c                Modified REAPAR to ensure that user does not request
c                more than 1000 orientations with IWRKSC=1
c 06.09.13 (BTD) Corrected error in TARCYL
c 06.09.13 (BTD) Added new target option CYLCAP:
c                new routine TARCYLCAP
c                modifications to REAPAR and TARGET
c 06.10.05 (BTD) fixed minor bugs in WRITENET
c 06.11.28 (BTD) Modified WRITESCA to correct error in calculation of
c                PPOL = degree of linear polarization of scattered
c                light
c 08.06.23 (BTD) corrected bug in routine TARCYLCAP
c end history
c
c Copyright (C) 1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,
c               2004,2005,2006,2008 B.T. Draine and P.J. Flatau
c This code is covered by the GNU General Public License.
c***********************************************************************
      RETURN
      END




