ADAS Subroutine xxdata_23
subroutine xxdata_23(iunit , & ndlev , ndmet , ndtem , ndtext , & seq , iz0 , iz , iz1 , & ctype , & bwno_f , nlvl_f , lmet_f , lcstrg_f , & ia_f , code_f , cstrga_f , & isa_f , ila_f , xja_f , wa_f , & nmet_f , imeta_f , & bwno_i , nlvl_i , lmet_i , lcstrg_i , & ia_i , code_i , cstrga_i , & isa_i , ila_i , xja_i , wa_i , & nmet_i , imeta_i , & nte_ion , tea_ion , lqred_ion , qred_ion , & nf_a , indf_a , lyld_a , yld_a , & nte_exc , tea_exc , lqred_exc , qred_exc , & l_ion , l_aug , l_exc , & ntext , ctext & ) c----------------------------------------------------------------------- c ****************** fortran77 subroutine: xxdata_23 ****************** c c purpose: to fetch data from an adf23 data set. c c input : (i*4) iunit = unit to which input file is allocated c (i*4) ndlev = maximum number of energy levels in c either ion stage c (i*4) ndmet = maximum number of metastables c (i*4) ndtem = maximum number of temperatures c (i*4) ndtext = maximum number of comment text lines c c output: (c*2) seq = iso-electronic sequence symbol c (i*4) iz0 = nuclear charge c (i*4) iz = ionising ion charge c (i*4) iz1 = ionised ion charge (=iz+1) c (c*2) ctype = adf23 file resol. ('ca', 'ls' or 'ic') c (r*8) bwno_f = ionis. poten. of ionised ion (cm-1) c (i*4) nlvl_f = number of levels of ionised ion c (l*4) lmet_f = .true. => ionised metastables marked c .false. => ionised metastables unmarked c (default action - mark ground) c (l*4) lcstrg_f = .true. => standard config strings for c ionised ion states c .false. => unreadable config string for c at least one ionised ion state c (i*4) ia_f() = index of ionised ion levels c 1st dim: ionised ion level index c (c*1) code_f() = met. or excit. DR parent marker (* or #) c 1st dim: ionised ion level index c (i*(*))cstrga_f() = ionised ion configuration strings c 1st dim: ionised ion level index c (i*4) isa_f() = ionised ion level multiplicity c 1st dim: ionised ion level index c (i*4) ila_f() = ionised ion total orb. ang. mom. c 1st dim: ionised ion level index c (r*8) xja_f() = ionised ion level (stat wt-1)/2 c 1st dim: ionised ion level index c (r*8) wa_f() = ionised ion level wave number (cm-1) c 1st dim: ionised ion level index c (i*4) nmet_f = number of ionised ion metastables c (i*4) imeta_f() = pointers to ionised metastables in full c ionised ion state list c 1st dim: ionised metastable index c (r*8) bwno_i = ionis. poten. of ionising ion (cm-1) c (i*4) nlvl_i = number of levels of ionising ion c (l*4) lmet_i = .true. => ionising metastable marked c .false. => ionising metastables unmarked c (default action - mark ground) c (l*4) lcstrg_i = .true. => standard config strings for c ionising ion states c .false. => unreadable config string for c at least one ionising ion state c (i*4) ia_i() = index of ionising ion levels c 1st dim: ionising ion level index c (c*1) code_i() = met. or excit. DR parent marker (* or #) c 1st dim: ionising ion level index c (i*(*))cstrga_i() = ionising ion configuration strings c 1st dim: ionising ion level index c (i*4) isa_i() = ionising ion level multiplicity c 1st dim: ionising ion level index c (i*4) ila_i() = ionising ion total orb. ang. mom. c 1st dim: ionising ion level index c (r*8) xja_i() = ionising ion level (stat wt-1)/2 c 1st dim: ionising ion level index c (r*8) wa_i() = ionising ion level wave number (cm-1) c 1st dim: ionising ion level index c (i*4) nmet_i = number of ionising ion metastables c (i*4) imeta_i() = pointers to ionising metastables in full c ionising ion state list c 1st dim: ionising metastable index c (i*4) nte_ion() = number of temperatures for direct ionis- c ation data for initial metastable block c 1st dim: ionising ion metastable index c (r*8) tea_ion(,) = temperatures (K) for direct ionis- c ation data for initial metastable block c 1st dim: ionising ion metastable index c 2nd dim: temperature index c (l*4) lqred_ion(,)= .true. => direct ionisation data line c present for ionised ion state c .false.=> data line not present for c ionised ion state. c 1st dim: ionising ion metastable index c 2nd dim: ionised ion state index c (r*8) qred_ion(,,)= reduced direct ionisation rate coeffts. c 1st dim: ionising ion metastable index c 2nd dim: ionised ion state index c 3rd dim: temperature index c (i*4) nf_a() = number of Auger ionised ion final states c 1st dim: ionising ion metastable index c (i*4) indf_a(,) = Auger ionised ion final state c 1st dim: ionising ion metastable index c 2nd dim: final state index c (l*4) lyld_a(,) = .true. => Auger data for ionising ion excited state c .false.=> no Auger data c 1st dim: ionising ion metastable index c 2nd dim: initial state index c (r*8) yld_a(,,) = Auger yields c 1st dim: ionising ion metastable index c 2nd dim: ionising ion excited state index c 3rd dim: ionised ion state index c (i*4) nte_exc() = number of temperatures for excitation c data for initial metastable block c 1st dim: ionising ion metastable index c (r*8) tea_exc(,) = temperatures (K) for direct excit- c ation data for initial metastable block c 1st dim: ionising ion metastable index c 2nd dim: temperature index c (l*4) lqred_exc(,)= .true. => direct excitation data line c present for excited ion state c .false.=> data line not present for c excited ion state. c 1st dim: ionising ion metastable index c 2nd dim: excited ionising ion state index c (r*8) qred_exc(,,)= reduced excitation rate coeffts. c 1st dim: ionising ion metastable index c 2nd dim: excited ionising ion state index c 3rd dim: temperature index c (l*4) l_ion() = .true. => ionisation data present for metastable c .false.=> ionisation data not present c 1st dim: ionising ion metastable index c (l*4) l_aug() = .true. => Auger data present for metastable c .false.=> Auger data not present c 1st dim: ionising ion metastable index c (l*4) l_exc() = .true. => excitation data present for metastable c .false.=> excitation data not present c 1st dim: ionising ion metastable index c (i*4) ntext = number of commment text lines c (c*80) ctext() = comment text lines c 1st dim: index of text lines c c c routines: c routine source brief description c ------------------------------------------------------------ c i4unit adas fetch unit number for output of messages c i4eiz0 adas fetch nuclear charge for element symbol c xfesym adas fetch element symbol for nuclear charge c xxcase adas convert string to lower or upper case c xxhkey adas extract a key name value from a string c xxlast adas find last occurence of char in string c xxslen adas find first and last characters of string c xxdtes adas detect if config string is eissner/standard c xxcftr adas covert config string between eissner/standard c c author: Hugh Summers c date : 22-05-2008 c c c version : 1.1 c date : 22-05-2008 c modified : Hugh Summers c - first version c c c----------------------------------------------------------------------- CHARACTER CODE_F(NDLEV), CODE_I(NDLEV) CHARACTER*(*) CSTRGA_F(NDLEV), CSTRGA_I(NDLEV) CHARACTER*80 CTEXT(NDTEXT) CHARACTER*2 CTYPE, SEQ INTEGER IA_F(NDLEV), IA_I(NDLEV), ILA_F(NDLEV) INTEGER ILA_I(NDLEV), IMETA_F(NDMET) INTEGER IMETA_I(NDMET), INDF_A(NDMET,NDLEV) INTEGER ISA_F(NDLEV), ISA_I(NDLEV) INTEGER IUNIT, IZ, IZ0, IZ1 INTEGER NDLEV, NDMET, NDTEM, NDTEXT INTEGER NF_A(NDMET), NLVL_F, NLVL_I, NMET_F INTEGER NMET_I, NTEXT, NTE_EXC(NDMET) INTEGER NTE_ION(NDMET) LOGICAL LCSTRG_F, LCSTRG_I, LMET_F, LMET_I LOGICAL LQRED_EXC(NDMET,NDLEV) LOGICAL LQRED_ION(NDMET,NDLEV), LYLD_A(NDMET,NDLEV) LOGICAL L_AUG(NDMET), L_EXC(NDMET) LOGICAL L_ION(NDMET) REAL*8 BWNO_F, BWNO_I REAL*8 QRED_EXC(NDMET,NDLEV,NDTEM) REAL*8 QRED_ION(NDMET,NDLEV,NDTEM) REAL*8 TEA_EXC(NDMET,NDTEM), TEA_ION(NDMET,NDTEM) REAL*8 WA_F(NDLEV), WA_I(NDLEV), XJA_F(NDLEV) REAL*8 XJA_I(NDLEV) REAL*8 YLD_A(NDMET,NDLEV,NDLEV)