Search Site | Contact Details | FAQ

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)
© Copyright 1995-2024 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk