ADAS Subroutine b4datd
SUBROUTINE B4DATD ( XRMEMB , NPMNCL , IMAXX , & NREPX , MAXTM , TEM , & NDBFILM , NBFIL , NCUTMC , & AUGM , DRM , DRMSF , & PWSAT , DSNXRT , OPEN17 , & dsnin , adas_c , adas_u & ) C----------------------------------------------------------------------- C C ************** FORTRAN77 SUBROUTINE: B4DATD ************************ C C VERSION: 1.1 C C PURPOSE: PROCESS DIELECTRONIC DATA FILES TO PREPARE C DIELECTRONIC AND AUGER DATA FOR ADAS204 C C THE DR FILE LAYOUT IS SPECIFIED BY THE ADF09 FORMAT C C DATA: THE SOURCE DATA IS ACCESSED THROUGH A CROSS-REFERENCE FILE C /../adas/adf18/a09_p204/<ion>n.dat C WHERE <ION> DENOTES THE RECOMBINED ION (EG. C4) C C THE PARENT CROSS-REFERENCING IS BASED ON THE ADAS204 C DRIVING INPUT DATA FILE SPECIFIED BY THE ADF25 FORMAT C /../adas/adf25/bns<yr>#<seq>/bns<yr>#<seq>_<code>.dat C WHERE <yr> IS A TWO DIGIT YEAR NUMBER C <seq> IS THE ISO=ELECTRONIC SEQUENCE SYMBOL C <code> IS AN ION CODE (eg. c4) OR ELEMENT CODE C (EG. c ) IF A NUMBER OF IONS OF THE C ISO-ELECTRONIC SEQUENCE ARE STACKED C SEQUENTIALLY. C C THE FILE NAMES ARE ANALYSED BY ADAS204 AND WARNINGS ISSUED C IF APPROPRIATE. THESE WARNINGS ARE NOT NECESSARILY FATAL. C FOR EXAMPLE, THE ADF18 FILE CONTAINS THE NAME OF ITS C EXPECTED DRIVING ADF25 FILE. THESE DIFFER IF THE ADF25 C FILE IS DRIVING A COMPLETE ISO-ELECTRONIC SEQUENCE CALC. C RATHER THAN JUST A SINGLE ION CASE. C C C INPUT: (C*8) XRMEMB = CROSS-REFERENCE PARTITIONED DATA SET MEMBER C (I*4) IMAXX = NUMBER OF REPRESENTATIVE LEVELS IN THE C EXTENDED SET REQUIRED FOR THE MAIN CODE C (I*4) NREPX() = REPRESENTATIVE N-SHELLS FOR THE MAIN CODE C (I*4) NPMNCL = NUMBER OF PARENTS INCLUDED IN THE MAIN CODE C ( GIVEN BY THE <INMEMB> FILE ) C (I*4) MAXTM = NUMBER OF TEMPERATURES USED IN MAIN CODE C (R*8) TEM() = TEMPERATURES (K) USED IN THE MAIN CODE C (I*4) NDBFILM = PARAMETER = MAXIMUM NUMBER OF DR FILES C MUST BE GREATER THAN NDBFIL C (C*120)DSNXRT = FIRST PART OF CROSS REFERENCE FILE NAME C (L) OPEN17 = .FALSE. -OUTPUT TO UNIT=17 SWITCHED OFF. C C OUTPUT: (I*4) NCUTMC(,) = N-SHELL CUT FOR AUGER RATES (AUGER CHANNEL C OPENS AT NCUTMC+1) C 1ST. INDEX = INITIAL PARENT C 2ND. INDEX = FINAL PARENT C (R*8) AUGM(,,,) = AUGER RATES (SEC-1) C 1ST INDEX = REPRESENTATIVE LEVEL C 2ND INDEX = INITIAL PARENT C 3RD INDEX = INITIAL SPIN SYSTEM C 4TH INDEX = FINAL PARENT C (R*8) DRM(,,,,) = DIELECTRONIC RATE COEFFTS. (CM3 SEC-1) C 1ST INDEX = REPRESENTATIVE LEVEL C 2ND INDEX = TEMPERATURE C 3RD INDEX = INITIAL PARENT C 4TH INDEX = INITIAL SPIN SYSTEM C 5TH INDEX = FINAL PARENT C (I*4) NBFIL = NUMBER OF DR FILES C C PROGRAM:(I*4) NDREP = PARAMETER = MAXIMUM NUMBER OF C REPRESENTATIVE LEVELS C (I*4) NDPRT = PARAMETER = MAXIMUM NUMBER OF PARENTS C (I*4) NDSYS = PARAMETER = MAXIMUM NUMBER OF SPIN SYSTEMS C (I*4) NDT = PARAMETER = MAXIMUM NUMBER OF TEMPERATURES C (I*4) NDBFIL = PARAMETER = MAXIMUM NUMBER OF DR FILES C (I*4) NDPAIR = PARAMETER = MAXIMUM NUMBER OF AUGER RATE C PARENT PAIRS C (I*4) NDREP = PARAMETER = MAXIMUM NUMBER OF MAIN CODE C REPRESENTATIVE LEVELS C (I*4) NDBREP = PARAMETER = MAXIMUM NUMBER OF DR C REPRESENTATIVE LEVELS C C (C*1) CHARS1 = ONE CHARACTER C (C*4) CHARS4 = FOUR CHARACTERS C (C*120)DSNBD() = DR DIELECTRONIC DATA FILE MEMBER NAMES C (C*30) BPDS = DR PARENT STATE DESCRIPTOR C (C*30) BPDSC() = DR PARENT STATE DESCRIPTOR ARRAY C (C*120)DSNMC = MAINCL CODE INPUT FILE MEMBER NAME C (C*120)DSNMCO = MAINCL CODE OUTPUT FILE MEMBER NAME C (C*120)DSN = CHARACTER FILE NAME WORKSPACE C (C*120)DSHORT = CURRENT FILE NAME WITH SYMBOLIC NAMES C (C*8) MEMBER = FILE MEMBER NAME WORKSPACE C (C*80) STRING = LINE OUT STRING C (C*133)LSTRNG = LINE IN STRING C (C*89) LSTRGO = LONG LINE OUT STRING C (L*4) OPEN12 = 'TRUE' IF OPEN C (L*4) OPEN13 = 'TRUE' IF OPEN C (L*4) OPEN14 = 'TRUE' IF OPEN C (L*4) LEXIST = 'TRUE' IF FILE EXISTS C (L*4) LSJ = 'TRUE' IF FILE EXISTS C (L*4) LSETX = 'TRUE' IF SPLINE UNINITIATED C C (I*4) I = RUNNING INDEX C (I*4) IBDPA() = PARENT INDEX IN THE COMPLETE DR LIST C (I*4) IBFIL = RUNNING INDEX FOR DR FILES C (I*4) IBREP = RUNNING REPRESENTATIVE SHELL INDEX C (I*4) IBMAX() = NUMBER OF DR REPRESENTATIVE LEVELS C 1ST. INDEX = DR FILE INDEX C (I*4) IBPR = CURRENT PARENT READ FROM DR FILE C (I*4) IBPRIA(,) = INITIAL PARENT INDEX FROM LIST FOR A FILE C 1ST. INDEX = LEVEL INDEX C 2ND. INDEX = DR FILE INDEX C (I*4) IBPRFA(,) = FINAL PARENT INDEX FROM LIST FOR A FILE C 1ST. INDEX = LEVEL INDEX C 2ND. INDEX = DR FILE INDEX C (I*4) IBREP = RUNNING INDEX FOR REPRESENTATIVE LEVELS C (I*4) IC = COUNTER OF N-SHELLS BELOW AUGER CUT C (I*4) IF = RUNNING INDEX ON TOTAL PARENT LIST C (I*4) II = RUNNING INDEX ON TOTAL PARENT LIST C (I*4) IMNPA() = PARENT INDEX CORRESPONDING TO MAIN CODE C (I*4) IND = CHARACTER INDEX POSITION MARKER ON STRING C (I*4) IOPT = SPLINE END CONDITION OPTION (SET =-1) C (I*4) IP = RUNNING INDEX ON TOTAL PARENT COUNT FROM C DR FILES C (I*4) IPI = INITIAL PARENT OF SUPPL. AUGERING STATE C (I*4) IPF = FINAL PARENT AFTER SUPPL. AUGER C (I*4) ISYSI = INITIAL SPIN INDX. OF SUPPL.AUGERING STATE C (I*4) IS = RUNNING INDEX C (I*4) ISREP = SUPPLEMENTARY REPRESENTATIVE LEVEL INDEX C (I*4) ISUPPLE = NUMBER OF SUPPLE. AUGER RATES C (I*4) IPAIRS = RUNNING INDEX FOR AUGER RATE PARENT PAIRS C (I*4) IPARM1 = DR FILE PARAMETER - PRTI C (I*4) IPARM2 = DR FILE PARAMETER - TRMPRT C (I*4) IPARM3 = DR FILE PARAMETER - SPNPRT C (I*4) IPARM4 = DR FILE PARAMETER - PRTF C (I*4) IPARM5 = DR FILE PARAMETER - TRMPRT C (I*4) IPARM6 = DR FILE PARAMETER - SPNPRT C (I*4) IPARM7 = DR FILE PARAMETER - NSYS C (I*4) IPARM8 = DR FILE PARAMETER - SYS C (I*4) IPARM9 = DR FILE PARAMETER - SPNSYS C (I*4) IPRT = RUNNING INDEX FOR PARENTS C (I*4) IPT = RUNNING INDEX ON TOTAL PARENT COUNT FROM C DR FILES C (I*4) IR = UNSPECIFIED LINE COUNTER C (I*4) IREAD = FLAG FOR READ OPTION C (I*4) IREFI() = INITIAL PARENT FOR AUGER RATE IN FULL LIST C (I*4) IREFF() = FINAL PARENT FOR AUGER RATE IN FULL LIST C (I*4) IREP = MAIN CODE REPRESENTATIVE LEVEL COUNTER C (I*4) IRFF = POINTER TO FINAL PARENT IN FULL LIST C (I*4) IRFI = POINTER TO INITIAL PARENT IN FULL LIST C (I*4) IS = SPIN SYSTEM INDEX C (I*4) ISET(,,) = FLAG FOR INPUT OF SUPP. AUGER DATA C ISET = 0 NO SUPP. DATA C ISET = 1 SUPP. DATA C 1ST INDEX - IPRT C 2ND INDEX - ISYS C 3RD INDEX - JPRT C (I*4) ISPF = FINAL PARENT SPIN FOR AUGER RATE C (I*4) ISPFA(,) = FINAL PARENT SPIN FOR AUGER RATE C 1ST. INDEX = AUGER PARENT PAIR C 2ND. INDEX = DR FILE INDEX C (I*4) ISPI = INITIAL PARENT SPIN FOR AUGER RATE C (I*4) ISPIA(,) = FINAL PARENT SPIN FOR AUGER RATE C 1ST. INDEX = AUGER PARENT PAIR C 2ND. INDEX = DR FILE INDEX C (I*4) IST1 = PARAMETER = MAIN OUTPUT STREAM C (I*4) ISYS = RUNNING INDEX FOR SPIN SYSTEMS C (I*4) IT = RUNNING INDEX FOR TEMPERATURES C (I*4) JPRT = RUNNING INDEX FOR PARENTS C (I*4) LEN1 = FIRST NON-BLANK CHARACTER IN MEMBER NAME C (I*4) LEN2 = LAST NON-BLANK CHARACTER IN MEMBER NAME C (I*4) MP() = INITIAL PARENT INDEX FOR AUGER RATE C (I*4) MPA() = FINAL PARENT INDEX FOR AUGER RATE C (I*4) NBCUT(,) = N-SHELL CUT FOR AUGER RATES (AUGER CHANNEL C OPENS AT NBCUT+1) C 1ST. INDEX = AUGER PARENT PAIR C 2ND. INDEX = DR FILE INDEX C (I*4) NBFIL = NUMBER OF DR FILES TO BE INCLUDED C (I*4) NBREP(,) = DR REPRESENTATIVE LEVEL N -VALUE C 1ST. INDEX = LEVEL INDEX C 2ND. INDEX = DR FILE INDEX C (I*4) NBT = NUMBER OF DR TEMPERATURES C (I*4) NCUTS = FIRST OPENING NSHELL FOR SUPPL. AUGER C (I*4) NDAUG = PARAMETER = MAXIMUM N-SHELL OF SPECIFIC C AUGER DATA C (I*4) NPAIRS = NUMBER OF AUGER RATE PARENT PAIRS C (I*4) NPRNT = C (I*4) NPRNTF() = NUMBER OF FINAL DR PARENTS FOR FILE C (I*4) NPRNTI() = NUMBER OF INITIAL DR PARENTS FOR FILE C (I*4) NPTOT = TOTAL NUMBER OF PARENTS ACCUMULATED FROM C (I*4) NREP = VALUE OF REPRESENTATIVE N-SHELL NREPX(IREP) C DR FILES C (I*4) NSREP() = SUPPLEMENTARY AUGER REPRESENT. N-SHELLS C (I*4) NTOP = MARKS DRM ARRAY ZERO FOR N>NTOP C C (R*8) AA() = SET OF AUGER RATES ON A LINE C (R*8) AAS = SUPPL. AUGER COEFFT. AT NCUTS (SEC-1) C (R*8) AUGTMP(N) = TEMPORARY STORE OF SUPP. AUGER RATES C 1ST INDEX - N-SHELL VALUE C (R*8) DDRROUT() = SCALED DIELECTRONIC DATA FOR SPLINE IN N C (R*8) DELTAE = SATELLITE ENERGY LEVEL ( K) C (R*8) DRRIN() = SCALED DIELECTRONIC DATA FOR SPLINE IN N C (R*8) DRMSF(,,,,) SUMMED DR COEFFICIENT C 1ST INDEX - FILE C 2ND INDEX - TEMPERATURE C 3RD INDEX - INITIAL PARENT C 4TH INDEX - SPIN SYSTEM C 5TH INDEX - FINAL PARENT C (R*8) DRMS() TEMPORARY STORE OF SUMMED DR RATES C 1ST INDEX - TEMPERATURE C (R*8) DRMF(,) TEMPORARY STORE OF DR RATES FOR NBREP C 1ST INDEX - REPRESENTATIVE LEVEL C 2ND INDEX - TEMPERATURE C (R*8) DTMP() = TEMPORARY STORE OF DIEL. COEFFICIENTS C (R*8) DRROUT() = SCALED DIELECTRONIC DATA FOR SPLINE IN N C (R*8) DY() = WORK VECTOR FOR SPLINE C (R*8) SLOPE = N POWER FOR SUPPL. AUGER RATE ABOVE NCUTS C (R*8) SYSFAC(,) = SPIN SYSTEM RESOLUTION OF AUGER RATES C 1ST. INDEX = AUGER RATE INDEX ON LINE C 2ND. INDEX = SPIN SYSTEM C (R*8) TEB() = DR TEMPERATURES (K) C (R*8) XIN() = WORK VECTOR FOR SPLINES C (R*8) XOUT() = WORK VECTOR FOR SPLINE C (R*8) XNBREP() = DR REPRES. LEVEL N -VALUE AS A REAL C 1ST. INDEX = LEVEL INDEX C (R*8) XNREPX() = REPRES. LEVEL N-VALUE FROM MAIN CODE AS A C REAL C (R*8) YIN() = WORK VECTOR FOR SPLINES C (R*8) YOUT() = WORK VECTOR FOR SPLINE C C C (R*8) XNREP = REAL VARIABLE FORM OF NREP C C (R*8) XICENH = IC ENHANCEMENT FACTOR FOR SPECIFIC C N-SHELL C C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------- C B4FLNM ADAS EXPAND FILENAME SYMBOLIC PART IF PRESENT C B4SUMD ADAS SUMS DR COEFFICIENTS OVER ALL N-SHELLS C FINTB HPS CONVERTS X-VALUES FOR N SHELL SPINE C XXSLEN ADAS FINDS LENGTH OF NON-BLANK PART OF STRINGS C XXSPLN ADAS GENERAL CUBIC SPLINE C C C AUTHOR: HUGH P. SUMMERS, JET C K1/1/57 C JET EXT. 4941 C C DATE: 12/05/92 C C UPDATE: 04/06/92, WILLIAM J. DICKSON , JET C ADJUSTED FORMAT STATEMENTS FROM ORIGINAL SPEC. C TO READ DR FILES WITH CHARACTERS SHIFTED ONE C SPACE TO THE LEFT. C DEFINED OUTPUT STREAM BY PARAMETER IST1 C C UPDATE: 07/92, WILLIAM J. DICKSON , JET C DEFINE VALUE OF LSETX AT BEGINNING OF CODE C C UPDATE: 27/08/92, WILLIAM J. DICKSON , JET C (1) ALLOW FOR SPECIFIC DATA FOR LOWEST N-SHELLS WHEN C INPUTING SUPPLEMENTARY AUGER TRANSITION PROBABILITIES C (2) DEFINE VARIABLE ISET TO MARK SUPPLEMENTARY DATA INPUT C C UPDATE: 06/09/92, WILLIAM J. DICKSON , JET C XREF FILES NOW STORED UNDER JETXLE C C UPDATE: 14/12/92, WILLIAM J. DICKSON , JET C SET UP ROUTINE TO SUM DR COEFFICIENTS OVER C REPRESENTATIVE SET C UPDATE: 13/11/93, WILLIAM J. DICKSON , JET C (1) ALLOW FOR IC ENHANCEMENT FACTOR TO BE READ IN AS PART C FILE AND SUBSEQUENT ADJUSTMENT OF DR RATE COEFFICIENT C CHECK CODING AROUND FORMAT STATEMENT 1036. C (NOTE THAT 1037 WAS ADDED AT THIS STAGE) C C UPDATE: 29/05/96 HP SUMMERS - COMPLETED UNIX FILE NAME PROCUREMENT C WITH ENVIRONMENT VARIABLE SYMBOL C SUBSTITUTION USING B4FLNM C UPDATE: 22/01/97 HP SUMMERS - CHANGED NAME TO B4DATD FROM BDMNCL1 C AND SUBROUTINE BDDRSM2 TO B4SUMD C UPDATE: 11/02/97 HP SUMMERS - IMPROVED INTERPOLATION OF SUPPLE. C AUGER DATA FROM X-REF FILE. C UPDATE: 17/02/97 HP SUMMERS - IMPROVED INTERPOLATION OF DR. DATA C WITH N, TO ENSURE ABSOLUTE ZEROS C ABOVE CUT-OFF N-SHELL C----------------------------------------------------------------------- C C UNIX-IDL CONVERSION: C C VERSION: 1.1 DATE: 05-03-98 C MODIFIED: H. SUMMERS C - MODIFIED VESION OF BDMNCL1.FOR v 1.1 C C VERSION: 1.2 DATE: 26-11-98 C MODIFIED: Martin O'Mullane C - redefine DSNXRT as the full DR supplement file C name. It is now given in the adf25 dataset and C passed through to here. C C VERSION: 1.3 DATE: 22-09-2000 C MODIFIED: Martin O'Mullane C - Initialize ibmax to 0 to avoid troubles in the C H-like case where we have no DR. C C----------------------------------------------------------------------- C----------------------------------------------------------------------- CHARACTER*80 ADAS_C, ADAS_U CHARACTER*120 DSNIN, DSNXRT CHARACTER*8 XRMEMB INTEGER IMAXX, MAXTM, NBFIL INTEGER NCUTMC(NDPRT,NDPRT), NDBFILM, NPMNCL INTEGER NREPX(NDREP) LOGICAL OPEN17 REAL*8 AUGM(NDREP,NDPRT,NDSYS,NDPRT) REAL*8 DRM(NDREP,NDT,NDPRT,NDSYS,NDPRT) REAL*8 DRMSF(NDBFILM,NDT,NDPRT,NDSYS,NDPRT) REAL*8 PWSAT(NDBFILM,NDT,NDPRT,NDSYS,NDPRT) REAL*8 TEM(NDT)