ADAS Subroutine dhdata
SUBROUTINE DHDATA( YEAR , YEARDF , TITLF , IFAIL & , IZ0 , IZ1 , ICLASS , ITMAX , IEVCUT & , ITDIMD , ITMAXD , IDMAXD , IZMAXD & , DTEV , DDENS & , DTEVD , DDENSD , DRCOFD , ZDATA & , DRCOFI & ) C C----------------------------------------------------------------------- C ****************** FORTRAN77 SUBROUTINE: DHDATA ********************* C C PURPOSE : TO EXTRACT 'SANC0' COLLISIONAL DIELECTRONIC DATA C C CALLING PROGRAM: IONBAL (ADAS412) C C NOTE : THE SOURCE DATA IS CONTAINED AS SEQUENTIAL DATASETS C AS FOLLOWS: C C (1) JETSHP.ACD<YR>#<IEL).DATA C (2) JETSHP.SCD<YR>#<IEL>.DATA C (3) JETSHP.CCD<YR>#<IEL>.DATA C (4) JETSHP.PRB<YR>#<IEL>.EV<CUT>.DATA C (5) JETSHP.PLT<YR>#<IEL>.EV<CUT>.DATA C (6) JETSHP.PRC<YR>#<IEL>.EV<CUT>.DATA C (7) JETSHP.PLS<YR>#<IEL>.DATA C C WHERE, <YR> = TWO INTEGERS FOR THE YEAR SELECTED C <IEL> = ELEMENT NAME C <CUT> = ENERGY CUT-OFF (EV) C C IF <CUT> = 0 THEN .EV<CUT> IS DELETED FROM ABOVE FILES. C C# C# mar20-95 Alessandro Lanzafame C# conversion to Unix C# C# (1) /ADAS/adas/adf11/acd<YR>/acd<YR>_<IEL>.dat C# (2) /ADAS/adas/adf11/scd<YR>/scd<YR>_<IEL>.dat C# (3) /ADAS/adas/adf11/ccd<YR>/ccd<YR>_<IEL>.dat C# (4) /ADAS/adas/adf11/prb<YR>/prb<YR>_<IEL>.dat C# (5) /ADAS/adas/adf11/plt<YR>/plt<YR>_<IEL>.dat C# (6) /ADAS/adas/adf11/prc<YR>/prc<YR>_<IEL>.dat C# (7) /ADAS/adas/adf11/pls<YR>/pls<YR>_<IEL>.dat C# C INPUT : (C*2) YEAR = YEAR OF DATA C (C*2) YEARDF = DEFAULT YEAR OF DATA IF REQUESTED YEAR C DOES NOT EXIST C (I*4) IZ0 = NUCLEAR CHARGE C (I*4) IZ1 = MINIMUM ION CHARGE + 1 C (I*4) ICLASS = CLASS OF DATA (1 - 6) C (I*4) ITMAX = NUMBER OF ( DTEV() , DDENS() ) PAIRS C (I*4) IEVCUT = ENERGY CUT-OFF (EV) C (R*8) DTEV() = DLOG10(ELECTRON TEMPERATURES (EV)) C (R*8) DDENS() = DLOG10(ELECTRON DENSITIES (CM-3)) C C OUTPUT : (C*80) TITLF = INFORMATION STRING C (I*4) ITDIMD = MAXIMUM NUMBER OF DATA TEMP & DENS C (I*4) ITMAXD = NUMBER OF DATA DTEVD() C (I*4) IDMAXD = NUMBER OF DATA DDENS() C (I*4) IZMAXD = NUMBER OF DATA ZDATA() C (I*4) ITDIMD = MAXIMUM NUMBER OF DATA TEMP & DENS C (I*4) ZDATA() = Z1 CHARGES IN DATASET C (I*4) IFAIL = 0 IF ROUTINE SUCCESSFUL C = 1 IF ROUTINE OPEN STATEMENT FAILED C (R*8) DTEVD() = DLOG10(DATA ELECTRON TEMPERATURES (EV)) C (R*8) DDENSD() = DLOG10(DATA ELECTRON DENSITIES (CM-3)) C (R*8) DRCOFD() = DLOG10(DATA RATE COEFFICIENTS (CM-3/S)) C (R*8) DRCOFI() = INTERPOLATION OF DRCOFD(,,) FOR C DTEV() & DDENS() C C PROGRAM: (C*2) SEQUA() = ION NAMES FOR A PARTICULAR IZ0 C (C*36) DSNAME = FILE NAME ( SEE ABOVE TYPES ) C (C*80) STRING = GENERAL VARIABLE C (C*80) BLANK = BLANK STRING C (C*2) YEARSV = LAST YEAR USED IN THIS ROUTINE C (I*4) IREAD = INPUT STREAM FOR OPEN STATEMENT C (I*4) IZ0SV = LAST IZ0 USED IN THIS ROUTINE C (I*4) ICLSV = LAST ICLASS USED IN THIS ROUTINE C (I*4) INDXZ1 = LOCATION OF IZ1 IN ZDATA() 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 C PE BRIDEN = ADDED VARIABLES (14/01/91) C C (I*4) L1 = PARAMETER = 1 C (I*4) IOPT = DEFINES THE BOUNDARY DERIVATIVES FOR THE C SPLINE ROUTINE 'XXSPLN', SEE 'XXSPLN'. C 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 C C (R*8) DY() = SPLINE INTERPOLATED DERIVATIVES C C (R*8 ADAS FUNCTION - 'R8FUN1' ( X -> X) ) C C AUTHOR : JAMES SPENCE (TESSELLA SUPPORT SERVICES PLC) C K1/0/80 C JET EXT. 4866 C C DATE : 22/02/90 C C DATE : 21/08/90 PE BRIDEN - REVISION: SEQUA(43) CHANGED ('TE'->'TC') C C DATE : 08/10/90 PE BRIDEN - REVISION: RENAMED SUBROUTINE C C DATE : 12/11/90 PE BRIDEN - CORRECTION: MOVE THE SETTING OF 'INDXZ1' C TO AFTER THE '20 CONTINUE' C STATEMENT. ALSO SAVE THE C VALUE OF 'IZ1MIN'. C C DATE : 14/01/91 PE BRIDEN - ADAS91: CALLS TO NAG SPLINE ROUTINES C 'E01BAF' & 'E02BBF' REPLACED C BY CALLS TO ADAS SPLINE C ROUTINE 'XXSPLN'. C C DATE : 25/06/91 PE BRIDEN - CORRECTION: CHANGED FOLLOWING DIMENSION: C 'DIMENSION DRCOFI(ITDIMD)' C TO C 'DIMENSION DRCOFI(ITMAX)' C C C DATE : 25/06/91 HP SUMMERS - REVISION: RENAMED FROM D2DATA TO DHDATA C SET IOPT=4 FOR IONBAL C DATE : 27/04/92 PE BRIDEN - ADDED DEFAULT YEAR FOR DATA IF C REQUESTED YEAR DOES NOT EXIST. C (ADDED 'YEARDF'), INTRODUCED IFAIL=-1 C IF DEFAULT YEAR WAS USED AND NOT THE C REQUESTED YEAR. C C C DATE : 20/03/95 AC LANZAFAME - CONVERSION TO UNIX C CHANGED OPEN STATEMENT AND FILE C NAMES C ADIR ADIR1 ADDED C DSNAME FROM C*30 TO C*40 C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C XXSPLN ADAS CUBIC SPLINE INTERPOLATION/EXTRAPOLATION C R8FUN1 ADAS REAL*8 FUNCTION: ( X -> X ) C C VERSION 1.1 DATE: 29-10-97 C RICHARD MARTIN C ADAS412 - PUT UNDER SCCS CONTROL. C C VERSION: 1.2 DATE: 01-12-97 C RICAHRD MARTIN C REMOVED DUPLICATE VARIABLE DECLARATION. C C VERSION: 1.3 DATE: 23-11-98 C RICHARD MARTIN & DAVID BROOKS C REMOVED 'DSNAME(12:13) = YEARDF' STATEMENT (FOR IBM). C C----------------------------------------------------------------------- C CHARACTER*80 TITLF CHARACTER*2 YEAR, YEARDF INTEGER ICLASS, IDMAXD, IEVCUT, IFAIL INTEGER ITDIMD, ITMAX, ITMAXD, IZ0 INTEGER IZ1, IZMAXD, ZDATA(ITDIMD) REAL*8 DDENS(ITMAX), DDENSD(ITDIMD) REAL*8 DRCOFD(ITDIMD,ITDIMD,ITDIMD) REAL*8 DRCOFI(ITMAX), DTEV(ITMAX) REAL*8 DTEVD(ITDIMD)