ADAS Subroutine c3corr
SUBROUTINE C3CORR( NVALS , IBSEL ,
& QATOM , ATOM ,
& QEFREF , ATMREF ,
& NSTORE , NA ,
& RION , SCALED
& )
C----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: C3CORR ********************
C
C PURPOSE: APPLY A CORRECTION TO REFERENCE RATE COEFFICIENT TO ALLOW
C FOR VARIATION OF PLASMA PARAMETERS ALONG ONE-DIMENSIONAL
C SCANS
C
C CALLING PROGRAM: SQEF
C
C SUBROUTINE:
C
C INPUT : (I*4) NVALS() = NUMBER OF VALUES IN SELECTED DATA BLOCK
C 1ST. DIM: NSTORE
C INPUT : (I*4) IBSEL = SELECTED BLOCK INDEX
C INPUT : (R*8) QATOM(,) = EFFECT. RATE COEFFT. TO SCALE WITH PARAM.
C 1ST. DIM: NA
C 2ND. DIM: NSTORE
C INPUT : (R*8) ATOM(,) = PLASMA PARAM. VALUES TO BASE SCALING ON
C 1ST. DIM: NA
C 2ND. DIM: NSTORE
C INPUT : (R*8) QEFREF() = RATE COEFFICIENT REFERENCE VALUES
C 1ST. DIM: NSTORE
C INPUT : (R*8) ATMREF() = REFERENCE VALUES FOR PLASMA PARAM.
C 1ST. DIM: NSTORE
C INPUT : (R*8) RION = SPECIFIED PARM. VALUE FOR COEFFT. OUTPUT
C INPUT : (I*4) NSTORE = NUMBER OF DATA BLOCKS IN DATASET.
C INPUT : (I*4) NA = MAX. NO. OF PARAM. VALUES IN BLOCK
C
C OUTPUT: (R*8) SCALED = SCALED PLASMA PARAMETER
C
C PARAM : (I*4) MXIN = MAX. NO. OF INPUT DATA SET VALUES
C
C (I*4) MAXVAL = NUMBER OF DATA VALUES IN SELECTED SET
C (I*4) IOPT = DEFINES THE BOUNDARY DERIVATIVES FOR THE
C SPLINE ROUTINE 'XXSPLE'. SEE 'XXSPLE'.
C ( VALID VALUES = <0, 0, 1, 2, 3, 4)
C (I*4) J = LOOP INDEX.
C
C (L*4) LSETX = FLAGS TO SPLINE ROUTINE 'XXSPLN' IF
C SPLINE PARAMETERS SHOULD BE SET UP.
C .TRUE. => SET UP SPLINE PARAMS.
C .FALSE. => DO NOT SET UP SPLINE PARAMS.
C
C (L*4) LINTRP = FLAGS TO IDENTIFY IF SCALED VALUE INTER-
C POLATED. (OUTPUT FROM XXSPLE).
C .TRUE. => SCALED VALUE INTERPOLATED
C .FALSE. => SCALED VALUE EXTRAPOLATED.
C
C (R*8) VL() = LN(INPUT VALUE/REF. VALUE) FOR PARAM.
C DIMENSION: 1
C (R*8) QVL() = LN(INPUT TABLE RATE COEF.) FOR PARAM.
C DIMENSION: 1
C (R*8) VECL() = LN(TABLE VALUE/REF. VALUE) FOR PARAM.
C DIMENSION: MXIN
C (R*8) QVECL() = LN(TABLE RATE COEF./REF. RATE COEF.)
C DIMENSION: MXIN
C (R*8) DY() = DERIVATIVES AT INPUT KNOTS TO XXSPLN.
C DIMENSION: MXIN
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C I4UNIT ADAS RETURNS UNIT NO. FOR OUTPUT OF MESSAGES.
C XXSPLE ADAS SPLINE SUBROUTINE (EXTENDED DIAGNOSTICS)
C R8FUN1 ADAS PERFORMS TRANSFORMATION ( X -> X )
C
C NOTES: THE QUANTITIES WHICH ARE SCALED BY THIS ROUTINE ARE : ION
C DENSITY, ION TEMPERATURE, EFFECTIVE Z AND MAGNETIC
C FIELD THIS CODE IS TAKEN FROM THE OLDER ADAS CODE
C 'QEFFH.FOR' BY H.P. SUMMERS
C
C AUTHOR: C.J. WHITEHEAD, PAP, UNIVERSITY OF STRATHCLYDE
C EXT 4205
C
C DATE: 24/11/94
C
C UPDATE: 19/12/94 - HP SUMMERS: ADJUST FORMATTING
C
C UPDATE: 21/04/95 - HP SUMMERS: REORDER TWO-DIMENSIONAL ARRAY INDICES
C
C UPDATE: 03/05/95 - PE BRIDEN : 1) REPLACED CALLS TO SPLINE NAG
C ROUTINES E01BAF/E02BBF WITH A
C CALL TO XXSPLE. (REQUIRED SOME
C RECODING). + CHECK FOR ATTEMPTED
C EXTRAPOLATION.
C 2) MADE CHANGES TO CODE TO MAKE IT
C ANSI STANDARD FORTRAN 77.
C 3) TIDIED UP CODE + ADDED CHECK TO
C MAKE SURE INTERNAL ARRAYS ARE
C LARGE ENOUGH.
C 4) GENERAL CHANGES TO FORMAT ETC.
C
C UPDATE: 15/05/95 - Tim Hammond: UNIX PORT
C Put under SCCS control
C
C----------------------------------------------------------------------
C----------------------------------------------------------------------
INTEGER IBSEL, NA, NSTORE
INTEGER NVALS(NSTORE)
REAL*8 ATMREF(NSTORE), ATOM(NA,NSTORE)
REAL*8 QATOM(NA,NSTORE), QEFREF(NSTORE)
REAL*8 RION, SCALED