ADAS Subroutine dxrdnm
C
SUBROUTINE DXRDNM( DSNINC , LPART , IFAIL ,
& IZ0 , NPART , IPRTD , IGRDD , ICLASS ,
& IZ1 , ITMAX ,
& ISDIMD , IZDIMD , ITDIMD ,
& ISMAXD , IZMAXD , ITMAXD , IDMAXD , NPARTR,
& DTEV , DDENS ,
& DTEVD , DDENSD , DRCOFD , ZDATA ,
& DRCOFI
& )
C
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: DXRDNM *********************
C
C PURPOSE : TO EXTRACT COLLISIONAL DIELECTRONIC DATA FROM
C EITHER PARTIAL (METASTABLE/PARENT RESOLVED) OR STANDARD
C (UNRESOLVED) ISONUCLEAR MASTER FILES
C
C NOTE : THE SOURCE DATA IS CONTAINED AS SEQUENTIAL DATASETS
C WITH THE FOLLOWING NAMING CONVENTIONS:
C
C (1) JETSHP.ACD<YR>#<EL).<CODE>DATA
C (2) JETSHP.SCD<YR>#<EL>.<CODE>DATA
C (3) JETSHP.CCD<YR>#<EL>.<CODE>DATA
C (4) JETSHP.PRB<YR>#<EL>.<FILT>.<CODE>DATA
C (5) JETSHP.PRC<YR>#<EL>.<FILT>.<CODE>DATA
C (6) JETSHP.QCD<YR>#<EL>.<CODE>DATA
C (7) JETSHP.XCD<YR>#<EL>.<CODE>DATA
C (8) JETSHP.PLT<YR>#<EL>.<CODE>DATA
C (9) JETSHP.PLS<YR>#<EL>.<CODE>DATA
C
C WHERE, <YR> = TWO DIGIT YEAR NUMBER
C <EL> = ONE OR TWO CHARACTER ELEMENT SYMBOL
C <CODE> = R => PARTIAL DATA
C U => PARTIAL DATA
C OMITTED => STANDARD DATA
C <FILT> = SIX CHARACTER POWER FILTER CODE
C
C AND DATA OF CLASSES 6 AND 7 DO NOT EXIST FOR THE PARTIAL CASE.
C
C
C INPUT : (C*120) DSNINC = ISONUCLEAR MASTER FILE NAME - VERIFIED
C AND READY FOR DYNAMIC ALLOCATION.
C INPUT : (L*4) LPART = .TRUE. => PARTIAL (RESOLVED) MASTER DATA
C . FALSE. => UNSRESOLVED MASTER DATA
C INPUT : (I*4) IZ0 = NUCLEAR CHARGE
C INPUT : (I*4) NPART() = METASTABLE PARTITION. I.E. NUMBER OF
C METASTABLES FROM CHARGE STATE IZ1MIN-1 TO
C IZ1MAX ON INPUT
C INPUT : (I*4) IPRTD = REQUIRED PARENT INDEX
C INPUT : (I*4) IGRDD = REQUIRED GROUND INDEX
C INPUT : (I*4) ICLASS = CLASS OF DATA (1 - 9 )
C INPUT : (I*4) IZ1 = REQUIRED ION CHARGE + 1
C INPUT : (I*4) ITMAX = NUMBER OF ( DTEV() , DDENS() ) PAIRS
C INPUT : (I*4) ISDIMD = MAXIMUM NUMBER OF (CHARGE, PARENT, GROUND)
C BLOCKS IN ISONUCLEAR MASTER FILES
C INPUT : (I*4) IZDIMD = MAXIMUM NUMBER OF CHARGE STATES
C IN ISONUCLEAR MASTER FILES
C INPUT : (I*4) ITDIMD = MAXIMUM NUMBER OF TEMP OR DENS VALUES IN
C ISOELECTRONIC MASTER FILES
C INPUT : (R*8) DTEV() = DLOG10(ELECTRON TEMPERATURES (EV))
C INPUT : (R*8) DDENS() = DLOG10(ELECTRON DENSITIES (CM-3))
C
C OUTPUT : (I*4) IFAIL = 0 IF ROUTINE SUCCESSFUL - DATA FOR THE
C REQUESTED YEAR USED.
C = 1 IF ROUTINE OPEN STATEMENT FAILED
C = 2 IF FILE EXISTS BUT REQUIRED DATA
C BLOCK DOES NOT
C OUTPUT : (I*4) ISMAXD = NUMBER OF (CHARGE, PARENT, METASTABLE)
C BLOCKS IN SELECTED MASTER FILE
C OUTPUT : (I*4) IZMAXD = NUMBER OF ZDATA() VALUES IN SELECTED
C MASTER FILE
C OUTPUT : (I*4) ITMAXD = NUMBER OF DTEVD() VALUES IN SELECTED
C MASTER FILE
C OUTPUT : (I*4) IDMAXD = NUMBER OF DDENSD() VALUES IN SELECTED
C MASTER FILE
C OUTPUT : (I*4) NPARTR() = METASTABLE PARTITION. I.E. NUMBER OF
C METASTABLES FROM CHARGE STATE IZ1MIN-1 TO
C IZ1MAX FOUND IN MASTER FILE
C OUTPUT : (R*8) DTEVD() = DLOG10(DATA ELECTRON TEMPERATURES (EV))
C IN SELECTED MASTER FILE
C OUTPUT : (R*8) DDENSD() = DLOG10(DATA ELECTRON DENSITIES (CM-3))
C IN SELECTED MASTER FILE
C OUTPUT : (R*8) DRCOFD(,,)= DLOG10(DATA RATE COEFFICIENTS (CM-3/S))
C IN SELECTED MASTER FILE
C 1ST DIM: (CHARGE,META,GRD) BLOCK INDEX
C 2ND DIM: TEMPERATURE INDEX
C 3RD DIM: DENSITY INDEX
C OUTPUT : (R*8) ZDATA() = CHARGE + 1 FOR IONS IN SELECTED MASTER
C FILE
C 1ST DIM: (CHARGE,META,GRD) BLOCK INDEX
C OUTPUT : (R*8) DRCOFI() = INTERPOLATION OF DRCOFD(,,) FOR
C DTEV() & DDENS()
C
C PROGRAM: (C*80) DSNOLD = FILE NAME USED IN PREVIOUS CALL
C (C*80) CLINE = GENERAL CHARACTER VARIABLE
C (C*80) CTERM = TERMINATOR LINE - '-' FILLED VARIABLE
C (C*4)) CPATRN() = PATTERN USED TO DETECT DATA CLASS
C (I*4) IZ0D = NUCLEAR CHARGE READ FROM MASTER FILE
C (I*4) IZ1MIN = MINIMUM CHARGE+1 READ FROM MASTER FILE
C (I*4) IZ1MAX = MAXIMUM CHARGE+1 READ FROM MASTER FILE
C (I*4) IABT = ABORT CODE
C (I*4) INDSEL = LOCATION OF (CHARGE,PRNT,GRND)
C DATA BLOCK IN FILE
C (I*4) IZDAT = CURRENT DATA BLOCK ION CHARGE +1
C (I*4) ISEL = GENERAL INDEX
C (I*4) I = GENERAL INDEX
C (I*4) IT = GENERAL INDEX
C (I*4) ID = GENERAL INDEX
C (I*4) IZCHK = INDEX TO VERIFY DATA Z1 SET COMPLETE
C (I*4) IPRTR() = PARENT INDICES IN DATA SET
C (I*4) IGRDR() = GROUND INDICES IN DATA SET
C (I*4) LCK = MUST BE GREATER THAN 'ITMAXD' & 'IDMAXD'
C & 'ITMAX' - ARRAY SIZE FOR SPLINE CALCS.
C (R*8) A() = GENERAL ARRAY
C (R*8) DRCOF0(,) = INTERPOLATION OF DRCOFD(,,) W.R.T DTEV()
C (L*8) LEXIST = TRUE --- FILE TO OPEN EXISTS ELSE NOT
C (I*4) L1 = PARAMETER = 1
C (I*4) IOPT = DEFINES THE BOUNDARY DERIVATIVES FOR THE
C SPLINE ROUTINE 'XXSPLN', SEE 'XXSPLN'.
C (L*4) LSETX = .TRUE. => SET UP SPLINE PARAMETERS RELATING
C TO X-AXIS.
C .FALSE. => DO NOT SET UP SPLINE PARAMETERS
C RELATING TO X-AXIS.
C (I.E. THEY WERE SET IN A PREVIOUS
C CALL )
C (VALUE SET TO .FALSE. BY 'XXSPLN')
C (R*8) DY() = SPLINE INTERPOLATED DERIVATIVES
C
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C I4UNIT ADAS FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES
C I4FCTN ADAS CONVERT STRING TO INTEGER FORM
C
C (R*8 ADAS FUNCTION - 'R8FUN1' ( X -> X) )
C
C AUTHOR : H. P. SUMMERS, JET
C K1/1/57
C JET EXT. 4941
C
C DATE : 24/04/94
C
C UPDATE : 21/07/94 - HPS - BYPASS CHECK ON CHARGE STATE COMPLETENESS
C FOR XCD AND QCD FILES
C
C UNIX-IDL PORT:
C
C VERSION: 1.1 DATE: 08-11-95
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - FIRST RELEASE
C
C VERSION: 1.2 DATE: 22-11-95
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - CHANGED TEST FOR ION LIMITS SLIGHTLY FROM
C IZ1MIN.GE.IZ1MAX TO IZ1MIN.GT.IZ1MAX TO ALLOW
C RUNS FOR HYDROGEN TO PROCEED.
C
C VERSION: 1.3 DATE: 13-10-99
C MODIFIED: Martin O'Mullane
C - PRB definition has been changed and they are now
C summed over the parents. This necessitates accessing
C the data more like PLT/PRC/PLS than the others.
C - DSNOLD made same size as DSNINC
C
C VERSION: 1.4 DATE: 02-01-2001
C MODIFIED: Martin O'Mullane
C - Error in logic reading number of metastables in
C resolved datasets - change IZ1MAX+IZ1MAX-2.GT.16
C to IZ1MAX+IZ1MIN-2.GT.16
C
C VERSION: 1.4 DATE: 24-07-2001
C MODIFIED: Richard Martin
C Added check for whitespace (line 323), so that it can cope
C with SCCS data.
C
C VERSION: 1.5 DATE: 22-12-2008
C MODIFIED: Allan Whiteford
C SAVEd IZ1MAX, IGRDR, IPRTR in addition to the
C previously saved variables.
C
C-----------------------------------------------------------------------
CHARACTER*120 DSNINC
INTEGER ICLASS, IDMAXD, IFAIL, IGRDD
INTEGER IPRTD, ISDIMD, ISMAXD, ITDIMD
INTEGER ITMAX, ITMAXD, IZ0, IZ1
INTEGER IZDIMD, IZMAXD, NPART(IZDIMD)
INTEGER NPARTR(IZDIMD)
LOGICAL LPART
REAL*8 DDENS(ITMAX), DDENSD(ITDIMD)
REAL*8 DRCOFD(ISDIMD,ITDIMD,ITDIMD)
REAL*8 DRCOFI(ITMAX), DTEV(ITMAX)
REAL*8 DTEVD(ITDIMD), ZDATA(ISDIMD)