ADAS Subroutine b3leve
SUBROUTINE B3LEVE( NDLEV , IZDIMD, & IZMAX , Z1A , IZA , IZ0A , IZ1A, & BWNOA , IL , & IA , NA , WAA , & IZS , IZ0 , & BWNO , WAO ) C C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: B3LEVE ********************* C C PURPOSE: TO EVALUATE IONISATION AND LEVEL ENERGIES FOR A SELECTED C MEMBER OF AN ISOELECTRONIC SEQUENCE FROM THE GENERAL Z DATA C C CALLING PROGRAM: ADAS203 C C DATA: C C THE UNITS USED IN THE DATA FILE ARE TAKEN AS FOLLOWS: C C IONISATION POTENTIAL: WAVE NUMBER (CM-1) C INDEX LEVEL ENERGIES: WAVE NUMBER (CM-1) C C C SUBROUTINE: C C (I*4) NDSPLN = PARAMETER = MAXIMUM NUMBER OF SPLINE KNOTS C C INPUT : (I*4) NDLEV = MAXIMUM NUMBER OF LEVELS THAT CAN BE READ C INPUT : (I*4) IZDIMD = MAX. NUMBER OF SEQUENCE MEMBERS ALLOWED C C INPUT : (I*4) IZMAX = NUMBER OF SEQUENCE MEMBERS C INPUT : (R*8) Z1A() = SEQUNCE RECOMBINING ION CHARGES READ C 1ST DIMENSION - SEQUENCE MEMBER INDEX C INPUT : (I*4) IZA() = SEQUENCE RECOMBINED ION CHARGES C 1ST DIMENSION - SEQUENCE MEMBER INDEX C INPUT : (I*4) IZ0A() = SEQUENCE NUCLEAR CHARGES C 1ST DIMENSION - SEQUENCE MEMBER INDEX C INPUT : (I*4) IZ1A() = SEQUNCE RECOMBINING ION CHARGES READ C 1ST DIMENSION - SEQUENCE MEMBER INDEX C (NOTE: IZ1 SHOULD EQUAL IZ+1) C INPUT : (R*8) BWNOA() = IONISATION POTENTIALS (CM-1) C 1ST DIMENSION - SEQUENCE MEMBER INDEX C C INPUT : (I*4) IL = INPUT DATA FILE: NUMBER OF ENERGY LEVELS C C INPUT : (I*4) IA() = ENERGY LEVEL INDEX NUMBER C INPUT : (I*4) NA() = PRINCIPAL QUANTUM NUMBER OF VALENCE ELECTRON C INPUT : (R*8) WAA() = ENERGY RELATIVE TO LEVEL 1 (CM-1) FOR LEVEL C 'IA()' C 1ST DIMENSION - LEVEL INDEX C 2ND DIMENSION - SEQUENCE MEMBER INDEX C INPUT : (I*4) IZS = NUCLEAR CHARGE OF NEUTRAL SEQUENCE MEMBER C INPUT : (I*4) IZ0 = NUCLEAR CHARGE OF SELECTED ION C C OUTPUT: (R*8) BWNO = IONISATION ENERGY OF SELECTED ION (CM-1) C OUTPUT: (R*8) WAO() = LEVEL ENERGIES RELATIVE TO LOWEST (CM-1) C C (I*4) I = GENERAL USE. C (I*4) IENDN = SPLINE END CONDITION SWITCH AT LAST POINT C (I*4) IEND1 = SPLINE END CONDITION SWITCH AT FIRST POINT C (I*4) IFORMS = SPLINE INDEPENDENT VARIABLE FORM SWITCH C (I*4) K = GENERAL USE. C C (R*8) C1(,) = 1ST SPLINE COEFFICIENT MATRIX C (R*8) C2(,) = 2ND SPLINE COEFFICIENT MATRIX C (R*8) C3(,) = 3RD SPLINE COEFFICIENT MATRIX C (R*8) C4(,) = 4TH SPLINE COEFFICIENT MATRIX C (R*8) DY = GRADIENT OF SPLINE AT POINT C (R*8) ENI = LEVEL PRINCIPAL QUANTUM NUMBER C (R*8) EN1 = LOWEST LEVEL PRINCIPAL QUANTUM NUMBER C (R*8) E1I = LEVEL ENERGY (RYDBERGS) C (R*8) B3FORM = EXTERNAL FUNCTION (SEE SUBROUTINE SECTION) C (R*8) REN = GENERAL USE C (R*8) XI = GENERAL USE C (R*8) XSA() = SPLINE INDEPENDENT VARIABLE AT KNOTS C (R*8) Y = SPLINE INTERPOLATED VALUE C (R*8) YSA() = SPLINE DEPENDENT VARIABLE AT KNOTS C (R*8) Z1 = CURRENT ION CHARGE +1 C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C B2GSPC ADAS GENERATES SPLINE COEFFICIENT MATRICES C B2NFAS ADAS SETS SPLINE ASYMPTOTIC CONDITIONS C B3FORM ADAS INDEPENDENT VARIABLE FUNCTION FOR SPLINE C B2SORT ADAS SORTS VECTOR INTO INCREASING ORDER C C AUTHOR: H. P. SUMMERS, JET C K1/1/57 C JET EXT. 4941 C C DATE: 08/01/95 C C UNIX-IDL PORT: C C VERSION: 1.1 DATE: 20-03-96 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - PUT UNDER S.C.C.S. CONTROL C - REPLACED CALLS TO NSORT ROUTINE WITH CALLS TO B2SORT. C NSORT IS USED TO SORT A REAL ARRAY AND ASSOCIATED C INTEGER ARRAY WHEREAS WHAT WAS BEING PASSED TO IT WAS C A REAL ARRAY AND ANOTHER, ASSOCIATED REAL ARRAY. B2SORT C TAKES 2 REAL ARRAYS AS INPUT AND PERFORMS A BUBBLE SORT C ON THEM. C C VERSION: 1.2 DATE: 23-04-07 C MODIFIED: ALLAN WHITEFORD C - RENAMED FORM SUBROUTINE TO B3FORM. C C----------------------------------------------------------------------- INTEGER IA(NDLEV), IL, IZ0 INTEGER IZ0A(IZDIMD), IZ1A(IZDIMD) INTEGER IZA(IZDIMD), IZDIMD, IZMAX, IZS INTEGER NA(NDLEV), NDLEV REAL*8 BWNO, BWNOA(IZDIMD) REAL*8 WAA(NDLEV,IZDIMD), WAO(NDLEV) REAL*8 Z1A(IZDIMD)