Search Site | Contact Details | FAQ

ADAS Subroutine d7link

C UNIX-IDL PORT - SCCS INFO: MODULE @(#)d7link.for	1.2 DATE 02/27/98

      SUBROUTINE D7LINK( NDLEV   , NDMET  ,
     &                   NMET    , IMETR  , NPMET  , IPMETR ,
     &                   CSTRGA  , ISA    , ILA    , NALCM  , IALCM ,
     &                   ISALCM  ,
     &                   CSTRGPA , IPSA   , IPLA   , NALCP  , IALCP ,
     &                   ISALCP  ,
     &                   LLINK   , ILINK  , LEISS
     &                 )
C---------------------------------------------------------------------
C                                                                       ********
C  ****************** FORTRAN 77 SUBROUTINE: D7LINK ****************************
C
C  PURPOSE: RETURNS A TRUTH TABLE OF LINKS BETWEEN PARENTS AND
C           RECOMBINED ION METASTABLES FOR RADIATIVE RECOMBINATION
C           AND IONISATION.  ALSO SUPPLIES THE DECIMAL ORBITAL NUMBER
C           FOR THE POSITION OF THE SHELL OF THE RECOMBINED ELECTRON.
C
C  CALLING PROGRAM: ADAS407
C
C  SUBROUTINE:
C
C  INPUT  :  (I*4)   NDLEV    = MAX. NUMBER OF LEVELS ALLOWED
C  INPUT  :  (I*4)   NDMET    = MAX. NO. OF METASTABLES ALLOWED
C  INPUT  :  (I*4)   NMET     = NUMBER OF METASTABLES (1<=NMET<=NDMET)
C  INPUT  :  (I*4)   IMETR()  = INDEX OF METASTABLE IN COMPLETE LEVEL
C                               LIST (ARRAY SIZE = 'NDMET' )
C  INPUT  :  (I*4)   NPMET    = NUMBER OF PARENT METASTABLES
C                               (1<=NPMET<=NDMET)
C  INPUT  :  (I*4)   IPMETR() = INDEX OF PARENT METASTABLES IN LEVEL
C                               LIST (ARRAY SIZE = 'NDMET' )
C  INPUT  :  (C*18)  CSTRGA() = CONFIGURATION (EISSNER FORM) FOR
C                               RECOMBINED ION LEVELS
C  INPUT  :  (I*4)   ILA()    = QUANTUM NUMBER (L) FOR LEVELS
C                               (RECOMNBINED  ION COPASE FILE)
C  INPUT  :  (I*4)   ISA()    = MULTIPLICITY FOR LEVELS
C                               (RECOMBINED ION COPASE FILE)
C                               NOTE: (ISA-1)/2 = QUANTUM NUMBER (S)
C  INPUT  :  (C*18)  CSTRGPA()= CONFIGURATION (EISSNER FORM) FOR
C                               RECOMBINING ION LEVELS
C  INPUT  :  (I*4)   IPLA()   = QUANTUM NUMBER (L) FOR LEVELS
C                               (RECOMBINING ION COPASE FILE)
C  INPUT  :  (I*4)   IPSA()   = MULTIPLICITY FOR LEVEL 'IA2()'
C                               (RECOMBINING ION COPASE FILE)
C                               NOTE: (IPSA-1)/2 = QUANTUM NUMBER (S)
C
C  OUTPUT :  (I*4)   NALCM    = NUMBER OF SPIN DISTINGUISED 
C                               METASTABLES
C  OUTPUT :  (I*4)   IALCM()  = INDEX OF ENERGY ORDERED SPIN 
C                               DISTINQUISHED METASTABLE
C                               1ST. DIM: METASTABLE INDEX  
C  OUTPUT :  (I*4)   ISALCM() = SPIN OF ENERGY ORDERED SPIN 
C                               DISTINQUISHED METASTABLE
C                               1ST. DIM: DISTINQUISHED METASTABLE INDEX  
C  OUTPUT :  (I*4)   NALCP      NUMBER OF SPIN DISTINQUISHED
C                               PARENTS 
C  OUTPUT :  (I*4)   IALCP()  = INDEX FOR ENERGY ORDERED SPIN 
C                               DISTINQUISHED PARENT
C                               1ST. DIM: PARENT INDEX  
C  OUTPUT :  (I*4)   ISALCP() = SPIN OF ENERGY ORDERED SPIN 
C                               DISTINQUISHED PARENT
C                               1ST. DIM: DISTINQUISHED PARENT INDEX  
C  OUTPUT :  (L*4)   LLINK(,,)= .TRUE.  => LINK EXISTS
C                               .FALSE. => NO LINK EXISTS
C                                1ST DIM: METASTABLE INDEX
C                                2ND DIM: PARENT METASTABLE INDEX
C                                3RD DIM: SPEN SYSTEM INDEX
C  OUTPUT :  (L*4)   ILINK(,,)= DECIMAL ORBITAL INDEX FOR RECOMBINED
C                               ION ORBITAL DIFFERENCE WITH PARENT
C                                1ST DIM: METASTABLE INDEX
C                                2ND DIM: PARENT METASTABLE INDEX
C                                3RD DIM: SPEN SYSTEM INDEX
C  OUTPUT :  (L*4)   LEISS    = .TRUE.  => ALL CONFIGS. EISSNER FORM
C                               .FALSE. => NOT ALL CONFIGS. EISSNER
C
C            (I*4)   NOCCUM() = OCCUPANCY FOR EACH DECIMAL ORBITAL
C                               INDEX 1-15 OF METASTABLE
C            (I*4)   NOCCUP() = OCCUPANCY FOR EACH DECIMAL ORBITAL
C                               INDEX 1-15 OF PARENT
C
C            (I*4)   I      = GENERAL INDEX
C            (I*4)   J      = GENERAL INDEX
C            (I*4)   IM     = GENERAL INDEX
C            (I*4)   IPAR   = GENERAL INDEX
C            (I*4)   IORBIT = CURRENT ORBITAL INDEX
C            (L*4)   LMATCH = GENERAL LOGICAL VARIABLE
C            (L*4)   LTYPE    = .TRUE.  => CONFIG. EISSNER FORM
C                               .FALSE. => CONFIG. NOT EISSNER FORM
C
C  ROUTINES:
C          ROUTINE    SOURCE    BRIEF DESCRIPTION
C          ------------------------------------------------------------
C          DXEXCF     ADAS      EXPAND EISSNER CONFIG. INTO SHELL OCCUP.
C          DXCOMP     ADAS      COMPARE TWO OCCUPANCY VECTORS
C          I4UNIT     ADAS      FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES
C
C  AUTHOR:  H. P. SUMMERS, UNIVERSITY OF STRATHCLYDE
C           JA8.08
C           TEL. 0141-553-4196
C
C  DATE:    05/06/96
C
C  UPDATE:  24/07/96 - PEB - ADDED THIRD 'LTYPE' ARGUMENT TO 3RD AND 4TH
C                            CALLS TO ROUTINE DXEXCF. (IT HAD BEEN LEFT
C                            OFF.)
C
C UNIX-IDL PORT:
C	   WILLIAM OSBORN, TESSELLA SUPPORT SERVICES PLC.
C
C DATE:    20TH AUGUST 1996
C
C VERSION: 1.1				DATE: 20-08-96
C MODIFIED: WILLIAM OSBORN
C	    - FIRST VERSION
C
C VERSION: 1.2				DATE: 14-08-97
C MODIFIED: HUGH SUMMERS
C	    - ADDED SPIN DISTINQUISHED PARENT AND METASTABLE 
C             IDENTIFICATION, COUNTERS AND POINTERS 
C
C VERSION: 1.3				DATE: 22-11-2003
C MODIFIED: Martin O'Mullane
C	    - Pass configurations through ceprep before acting on them.
C	    - Extend dimensions of orbital arrays.
C
C-------------------------------------------------------------------------------
      CHARACTER*18        CSTRGA(NDLEV),            CSTRGPA(NDLEV)
      INTEGER             IALCM(NDMET),             IALCP(NDMET)
      INTEGER             ILA(NDLEV),  ILINK(NDMET,NDMET,2)
      INTEGER             IMETR(NDMET),             IPLA(NDLEV)
      INTEGER             IPMETR(NDMET),            IPSA(NDLEV)
      INTEGER             ISA(NDLEV),  ISALCM(NDMET)
      INTEGER             ISALCP(NDMET),            NALCM,       NALCP
      INTEGER             NDLEV,       NDMET,       NMET,        NPMET
      LOGICAL             LEISS,       LLINK(NDMET,NDMET,2)
© Copyright 1995-2018 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk