Search Site | Contact Details | FAQ

ADAS Subroutine d7alfs

      SUBROUTINE D7ALFS( NDMET  , NDCONF , NDTHET , ndlev  , ndtrn  ,
     &                   IODIMD , IPMET  , IPMETR , IZ     , IZ0    ,
     &                   NTHETA , THETA  , ITREF  , IGRPA  ,
     &                   NORB   , VORB   , iz1    ,
     &                   il     , ia     , isa    , xja    , wa     ,
     &                   cstrga , icnte  , aval   , ie1a   , ie2a   ,
     &                   NCUT   , N0A    , PARMR  ,
     &                   ALFRA  , ALFRA0 , ALFRAR , ALRAPX ,
     &                   NCONFG ,
     &                   WVMIN  , WVMAX  ,
     &                   ECF    , FCF    , PCF    , WCF    , W      ,
     &                   NCF    , LCF    , NDCF   , LDCF   , NDMIN  ,
     &                   E      , DE0    , DE     , FM0    , FM     ,
     &                   IINAA  , IIPNAA , NCTAA  , NCTAAC , ECTAA  ,
     &                   NTRANS , ITYPE  , N1A    , NCUTT  , PARMD  ,
     &                   ALFDA  , ALFPART, AGNGPX ,
     &                   KGRPA  , NSYS
     &                 )
C-----------------------------------------------------------------------
C
C  ****************** FORTRAN77 SUBROUTINE: D7ALFS *********************
C
C
C  PURPOSE:
C           (1) CACLULATES RADIATIVE AND DIELECTRONIC VALUES AND
C               PARAMETERS FROM SPECIFIC ION FILES WHICH HAVE EISSNER
C               CONFIGURATION NOTATION
C           (2) CONSIDERS METASTABLE LEVEL INDICES AND EVALUATES NCUT
C               IDENTIFIES DIPOLE TRANSITION OF TYPE DN=0 AND DN>0
C               EVALUATES OSCILLATOR STRENGTHS AND AVERAGE ENERGY
C               OF TRANSITION
C           (3) SEPARATES TRANSITION ARRAYS FOR EACH METASTABLE AND
C               EVALUATES WAVELENGTH RANGES OF TRANSITION ARRAYS
C           (4) EVALUATES POWER IN EACH TRANSTION ARRAY
C           (5) CALCULATES IONISATION, RADIATIVE & DIELECTRONIC
C               RECOMBINATION VALUES AND PARAMETERS.
C
C
C  CALLING PROGRAM: ADAS407
C
C  SUBROUTINE:
C
C  INPUT : (I*4)  IUNIT    = UNIT NUMBER FOR SPECIFIC ION FILE FOR
C  INPUT : (I*4)  NDMET    = MAXIMUM NUMBER OF METASTABLES ALLOWED
C  INPUT : (I*4)  NDTHET   = MAXIMUM NUMBER OF TEMPS. FOR MAINCL FILE
C  INPUT : (I*4)  NDCONF   = MAXIMUM NUMBER OF CONFIGURATIONS OR
C                            DIPOLE TRANSITIONS PER PARENT ALLOWED
C  INPUT : (I*4)  IODIMD   = MAXIMUM NUMBER OF ORBITALS
C
C  INPUT : (I*4)  NPMET    = NO. OF RECOMBINING ION (PARENT) METASTABLES
C  INPUT : (I*4)  IPMETR() = INDICES OF RECOMBINING ION (PARENT)
C                            METASTABLES IN LEVEL LIST
C
C  INPUT : (I*4)  IZ       = RECOMBINING ION CHARGE
C  INPUT : (I*4)  IZ0      = NUCLEAR CHARGE
C
C  INPUT : (I*4)  NTHETA   = NUMBER OF TEMPERATURES FOR MAINCL FILE
C  INPUT : (R*8)  THETA()  = Z-SCALED TEMPERATURES FOR MAINCL FILE
C  INPUT : (I*4)  ITREF    = MAINCL TEMPERATURE INDEX FOR MATCHING
C
C  INPUT : (I*4)  IGRPA()  = NUMBER OF ELECTRONS ALLOWED IN EACH SHELL
C                            1ST DIM: SHELL INDEX (1=1S, 2=2S ETC)
C
C  INPUT : (R*8)  NORB     = NUMBER OF ELECTRON ORBITALS REQUIRED
C  INPUT : (R*8)  VORB()   = EFFECT. PRINC. QUANT. NO. FOR ORBITAL
C                            1ST DIM: SHELL INDEX (1=1S, 2=2S ETC)
C  OUTPUT: (I*4)  N0A(,)   = LOWEST ALLOWED N-SHELL
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: SPIN SYSTEM INDEX
C  I/O   : (R*4)  PARMR(,,)= PARAMETERS OF RADIATIVE RECOMBINATION
C                            APPROXIMATE FORMS
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: SPIN SYSTEM INDEX
C                            3RD DIM: PARMS.  1: EFF. N FOR LOWEST LEVEL
C                                             2: PHASE SPACE FACTOR
C                                             3: ENERGY DISPLACEMENT
C                                             4: SCALING MULTIPLIER
C  OUTPUT: (R*8)  ALFRA(,,)= TOTAL RADIATIVE RECOMB. COEFFTS. (CM3 S-1)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: SPIN SYSTEM INDEX
C                            3RD DIM: TEMPERATURE INDEX
C  OUTPUT: (R*8)  ALFRA0(,,)=GROUND RADIATIVE RECOMB. COEFFTS. (CM3 S-1)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: SPIN SYSTEM INDEX
C                            3RD DIM: TEMPERATURE INDEX
C  OUTPUT: (R*8)  ALFRAR(,,)=EXCIT. RADIATIVE RECOMB. COEFFTS. (CM3 S-1)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: SPIN SYSTEM INDEX
C                            3RD DIM: TEMPERATURE INDEX
C  OUTPUT: (R*8)  ALFRAPX() =
C  OUTPUT: (I*4)  NCONFG   = NUMBER OF CONFIGURATIONS
C
C  OUTPUT: (R*8)  WVMIN(,) = MINIMUM WAVELENGTH FOR TRANSITION ARRAY (A)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  WVMAX(,) = MAXIMUM WAVELENGTH FOR TRANSITION ARRAY (A)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  ECF(,)   = AVERAGE ENERGY FOR TRANSITION ARRAY (RYD)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  FCF(,)   = SUMMED OSCIL. STRENGTH FOR TRANSITION ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  PCF(,)   = RADIATED POWER FOR TRANSITION ARRAY AT
C                            SELELECTED TEMPERATURE (CF. ITSEL)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  WCF(,)   = STATISTICAL WEIGHT FOR UPPER SHELL OF ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  W()      = STATISTICAL WEIGHT FOR PARENT
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (I*4)  NCF(,)   = N-SHELL OF ACTIVE ELEC. IN PARENT FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  LCF(,)   = L-SHELL OF ACTIVE ELEC. IN PARENT FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  NDCF(,)  = N-SHELL CHANGE OF ACTIVE ELECTRON FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  LDCF(,)  = L-SHELL CHANGE OF ACTIVE ELECTRON FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  NDMIN()  = ?
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (R*8)  E()      = AVERAGE ENERGY FOR TRANSITION ARRAY (RYD)
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (R*8)  DE0()    = MEAN DELTA N = 0 TRANSITION ENERGY (CM-1)
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (R*8)  DE()     = MEAN DELTA N > 0 TRANSITION ENERGY (CM-1)
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (R*8)  FM0()    = DELTA N = 0 OSCILLATOR STRENGTH
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (R*8)  FM()     = DELTA N > 0 OSCILLATOR STRENGTH
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (I*4)  IINAA(,) = UPP. LEVEL INDEX OF DIPOLE TRANS FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  IIPNAA(,)= PAR. LEVEL INDEX OF DIPOLE TRANS FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  NCTAA(,) = ?
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  NCTAAC(,)= SECONDARY AUGER N-SHELL CUT-OFF FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  ECTAA (,)= IONIS. ENERGY CUT-OFF (CM-1) FOR ARRAY
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C
C  OUTPUT: (I*4)  NTRANS() = NUMBER OF DIPOLE TRANSITIONS FOR PARENT
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (I*4)  ITYPE(,) = TYPE OF DIELECTRONIC CORE TRANSITION
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  N1A(,)   = LOWEST ALLOWED N-SHELL VIA DIELECTRONIC
C                            TRANSITION
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (I*4)  NCUTT()  = N-SHELL ALT. AUG. CUT-OFF FOR DIELECTRONIC
C                            TRANSITION
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C  OUTPUT: (R*4)  PARMD(,,)= PARAMETERS OF DIELECTRONIC RECOMBINATION
C                            APPROXIMATE FORMS
C                            1ST DIM: PARENT INDEX
C                            3RD DIM: PARMS.  1: EFF. N FOR LOWEST LEVEL
C                                             2: PHASE SPACE FACTOR
C                                             3: ENERGY DISPLACEMENT
C                                             4: SCALING MULTIPLIER
C                                             5: EFF. N FOR LOWEST LEVEL
C                                             6: PHASE SPACE FACTOR
C                                             7: ENERGY DISPLACEMENT
C                                             8: SCALING MULTIPLIER
C                                             9: ENERGY DISPLACEMENT
C                                            10: SCALING MULTIPLIER
C                            3RD DIM: CONFIGURATION INDEX
C  OUTPUT: (R*8)  ALFDA(,) = TOTAL DIELECTRONIC RECOMB. COEFFTS. WITHOUT
C                            SPIN SYSTEM DIVISION  (CM3 S-1)
C                            1ST DIM: PARENT INDEX
C                            3RD DIM: TEMPERATURE INDEX
C  OUTPUT: (R*8)  ALFPART(,)=PARTIAL DIELECT. RECOMB. COEFFTS. (CM3 S-1)
C                            1ST DIM: PARENT INDEX
C                            2ND DIM: CONFIGURATION INDEX
C                            3RD DIM: TEMPERATURE INDEX
C  OUTPUT: (R*8)  AGNGPX() = ?
C
C  OUTPUT: (I*4)  NIA()    = ?
C  OUTPUT: (I*4)  LIA()    = ?
C  OUTPUT: (R*8)  WIA()    = ?
C  OUTPUT: (I*4)  NIA()    = ?
C  OUTPUT: (I*4)  LIA()    = ?
C  OUTPUT: (R*8)  WIA()    = ?
C  OUTPUT: (R*8)  WIA()    = ?
C
C  OUTPUT: (I*4)  KGRPA()  = INDEX POINTER TO ELECTRON ORBITALS.
C  OUTPUT: (I*4)  NSYS()   = NUMBER OF SPIN SYSTEMS (1 OR 2)
C                            1ST DIM: PARENT INDEX
C  OUTPUT: (I*4)  NCUT()   = N-SHELL CUT-OFF
C                            1ST DIM: PARENT INDEX
C
C
C NOTE:
C
C ROUTINES:
C          ROUTINE    SOURCE    BRIEF DESCRIPTION
C          ------------------------------------------------------------
C          NVGOEL     ADAS      CALC. RAD. RECOM. COEFFTS. TO N-SHELLS
C          GPCALL     ADAS      CALC. DIELECTRONIC COEFFTS. TO N-SHELLS
C
C AUTHOR:  H. P. SUMMERS, JET
C          K1/1/57
C          JET EXT. 4941
C
C DATE:    29/06/94
C
C UPDATES: 09/08/94 - HPS - CORRECT PARAMETER LIST FOR GPCALL TO INCLUDE
C                           IFSEL.  SET IFSEL =1, BUT IT IS NOT USED
C UPDATES: 07/03/96 - HPS - PUT DIMENSIONALITY OF A NUMBER OF VECTORS OF
C                           LENGTH 15 TO INTERNAL PARAMETER ITDIMD
C
C UPDATES: 15/03/96 - PEB - CORRECT ERROR: WIA(,) AND WJA(,) CHANGED TO
C                           REAL*8 FROM INTEGER.
C
C UNIX-IDL PORT:
C	   WILLIAM OSBORN, TESSELLA SUPPORT SERVICES PLC.
C
C DATE:    22ND APRIL 1996
C
C VERSION: 1.1				DATE: 22-04-96
C MODIFIED: WILLIAM OSBORN
C	    - FIRST VERSION. NO CHANGES TO IBM VERSION
C
C VERSION: 1.2				DATE: 14-05-96
C MODIFIED: WILLIAM OSBORN
C	    REARRANGED ARGUMENTS TO STAY UNDER
C	    LIMIT OF 20 CONTINUATION CHARACTERS AT ARCETRI AND GARCHING
C
C VERSION: 1.3				DATE: 20-08-96
C MODIFIED: HUGH SUMMERS + WILLIAM OSBORN
C 	    ADDED TRAP FOR ZERO POWER FOR A PARENT. THIS
C           IS NOT A FULL SOLUTION (CF. D7AUTS COMMENTS)
C VERSION: 1.4				DATE: 24-06-97
C MODIFIED: HUGH SUMMERS
C           CHANGED PARAMETER KTERM FROM 100 TO 300
C                             KTRAN FROM 1000 TO 3200
C
C
C VERSION : 1.5
C DATE    : 23-05-2003
C MODIFIED: Martin O'Mullane
C               - Pass in adf04 data rather than rewinding and
C                 reading it again.
C               - Remove all unused variables and reduced length of
C                 parameter list.
C               - Remove redundant code and format statements.
C
C
C VERSION : 1.6
C DATE    : 04-11-2003
C MODIFIED: Hugh Summers
C               - Increased extended electron list strings to 93
C               - Changed minimum A-value, aminsc to 1.0D3
C               - match iodimd to ndorb for internal dimensions
C
C VERSION : 1.6
C DATE    : 06-01-2004
C MODIFIED: Martin O'Mullane
C               - Remove redundant nia, lia, wia, nja, lja and wja
C                 arguments.
C               - Pre-process configuration string with a new 
C                 routine (ceprep) to account for leading d10 and
C                 f10-f14 terms.
C               - Add error trapping code to check for overruns
C                 and index=0 errors.
C
C VERSION : 1.7
C DATE    : 15-11-2004
C MODIFIED: Martin O'Mullane
C               - Increase to 3500 levels and 500000 transitions.
C
C-----------------------------------------------------------------------
      CHARACTER*18        CSTRGA(NDLEV)
      INTEGER             IA(NDLEV),   ICNTE,       IE1A(NDTRN)
      INTEGER             IE2A(NDTRN), IGRPA(IODIMD)
      INTEGER             IINAA(NDMET,NDCONF),      IIPNAA(NDMET,NDCONF)
      INTEGER             IL,          IODIMD,      IPMET
      INTEGER             IPMETR(NDMET),            ISA(NDLEV),  ITREF
      INTEGER             ITYPE(NDMET,NDCONF),      IZ,          IZ0
      INTEGER             IZ1,         KGRPA(IODIMD)
      INTEGER             LCF(NDMET,NDCONF),        LDCF(NDMET,NDCONF)
      INTEGER             N0A(NDMET,2),             N1A(NDMET,NDCONF)
      INTEGER             NCF(NDMET,NDCONF),        NCONFG
      INTEGER             NCTAA(NDMET,NDCONF),      NCTAAC(NDMET,NDCONF)
      INTEGER             NCUT(NDMET), NCUTT(NDMET,NDCONF)
      INTEGER             NDCF(NDMET,NDCONF),       NDCONF,      NDLEV
      INTEGER             NDMET,       NDMIN(NDMET),             NDTHET
      INTEGER             NDTRN,       NORB,        NSYS(NDMET), NTHETA
      INTEGER             NTRANS(NDMET)
      REAL*8              AGNGPX(ITDIMD),           ALFDA(NDMET,NDTHET)
      REAL*8              ALFPART(NDMET,NDCONF,NDTHET)
      REAL*8              ALFRA(NDMET,2,NDTHET)
      REAL*8              ALFRA0(NDMET,2,NDTHET)
      REAL*8              ALFRAR(NDMET,2,NDTHET),   ALRAPX(ITDIMD)
      REAL*8              AVAL(NDTRN), DE(NDMET),   DE0(NDMET)
      REAL*8              E(NDMET),    ECF(NDMET,NDCONF)
      REAL*8              ECTAA(NDMET,NDCONF),      FCF(NDMET,NDCONF)
      REAL*8              FM(NDMET),   FM0(NDMET)
      REAL*8              PARMD(NDMET,10,NDCONF),   PARMR(NDMET,2,4)
      REAL*8              PCF(NDMET,NDCONF),        THETA(NDTHET)
      REAL*8              VORB(IODIMD),             W(NDMET)
      REAL*8              WA(NDLEV),   WCF(NDMET,NDCONF)
      REAL*8              WVMAX(NDMET,NDCONF),      WVMIN(NDMET,NDCONF)
      REAL*8              XJA(NDLEV)
© Copyright 1995-2024 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk