*IF DEF,A02_1C                                                             LWTRAN1C.2      
C ******************************COPYRIGHT******************************    GTS2F400.5761   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.5762   
C                                                                          GTS2F400.5763   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.5764   
C restrictions as set forth in the contract.                               GTS2F400.5765   
C                                                                          GTS2F400.5766   
C                Meteorological Office                                     GTS2F400.5767   
C                London Road                                               GTS2F400.5768   
C                BRACKNELL                                                 GTS2F400.5769   
C                Berkshire UK                                              GTS2F400.5770   
C                RG12 2SZ                                                  GTS2F400.5771   
C                                                                          GTS2F400.5772   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.5773   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.5774   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.5775   
C Modelling at the above address.                                          GTS2F400.5776   
C ******************************COPYRIGHT******************************    GTS2F400.5777   
C                                                                          GTS2F400.5778   
CLL  *DECK LWTRAN, CONTAINING ROUTINES LWTRAN AND LWLKIN.                  LWTRAN1C.3      
CLL  LWLKIN MUST BE CALLED TO INITIALIZE TRTAB BEFORE LWTRAN IS CALLED     LWTRAN1C.4      
CLL  (LWTRAN WOULD NORMALLY BE CALLED VIA LWMAST AND LWRAD).               LWTRAN1C.5      
CLL  IF UPDATE *DEF CRAY IS OFF, THE CODE IS STANDARD FORTRAN 77 EXCEPT    LWTRAN1C.6      
CLL  FOR HAVING ! COMMENTS (IT THEN SETS THE "VECTOR LENGTH" TO 1) BUT     LWTRAN1C.7      
CLL  OTHERWISE IT INCLUDES AN AUTOMATIC ARRAY ALSO.                        LWTRAN1C.8      
CLL                 AUTHOR: STEPHANIE WOODWARD 19-10-94                    LWTRAN1C.9      
CLL                 (BASED ON UM CODE WRITTEN BY WILLIAM INGRAM)           LWTRAN1C.10     
CLL                 VERSION 3.4                                            LWTRAN1C.11     
CLL                                                                        LWTRAN1C.12     
CLL                                                                        LWTRAN1C.13     
CLL  IT CALCULATES CLEAR-SKY TRANSMISSIVITIES IN EACH OF THE NBANDS        LWTRAN1C.14     
CLL  LONGWAVE SPECTRAL BANDS (AND, OPTIONALLY, ADDITIONAL DIAGNOSTIC       LWTRAN1C.15     
CLL  ONES) FROM THE PATHLENGTHS FOR EACH EFFECTIVE ABSORBING GAS.          LWTRAN1C.16     
CLL  (WHERE THE ABSORPTION BY A GAS INCLUDES TERMS WITH DIFFERENT          LWTRAN1C.17     
CLL  PATHLENGTH SCALING, LIKE WATER VAPOUR LINE & CONTINUUM, THEY ARE      LWTRAN1C.18     
CLL  DIFFERENT GASES AS FAR AS LWTRAN IS CONCERNED.)  IT USES LOOK-UP      LWTRAN1C.19     
CLL  TABLES DERIVED FROM LINE DATA AS DESCRIBED BY SLINGO AND WILDERSPIN   LWTRAN1C.20     
CLL  (APRIL 1986, QUART.J.R.MET.SOC., 112, 472, 371-386), OR UMDP 23,      LWTRAN1C.21     
CLL  WHICH INCORPORATE A FULL ANGULAR INTEGRATION.  INTERPOLATION IS       LWTRAN1C.22     
CLL  LOGARITHMIC IN THE PATHLENGTH, WITH VALUES AT HALF-DECADE INTERVALS   LWTRAN1C.23     
CLL  FROM 10**-9 TO 10**3 KG/M2.                                           LWTRAN1C.24     
CLL  OFFLINE DOCUMENTATION IS IN UMDP 23.                                  LWTRAN1C.25     
C                                                                          GSS3F402.218    
CLL  Model            Modification history from model version 3.0:         GSS3F402.219    
CLL version  Date                                                          GSS3F402.220    
CLL   4.2    Sept.96  T3E migration: *DEF CRAY removed;                    GSS3F402.221    
CLL                   dynamic allocation no longer *DEF controlled;        GSS3F402.222    
CLL                   cray HF functions removed.                           GSS3F402.223    
CLL                       S.J.Swarbrick                                    GSS3F402.224    
C*L                                                                        LWTRAN1C.26     

      SUBROUTINE LWTRAN (PATH, TRTAB, DTRTAB,                               6LWTRAN1C.27     
     &     L,                                                              GSS3F402.225    
     &     TRANS)                                                          LWTRAN1C.31     
C*                                                                         LWTRAN1C.32     
*CALL LWNBANDS                                                             LWTRAN1C.33     
*CALL LWNGASES                                                             LWTRAN1C.34     
*CALL LWGSINBS                                                             LWTRAN1C.35     
*CALL LWKCONT                                                              LWTRAN1C.36     
*CALL LWNTRANS                                                             LWTRAN1C.37     
*CALL LWNLKUPS                                                             LWTRAN1C.38     
*CALL LWTABLE                                                              LWTRAN1C.39     
C*L                                                                        LWTRAN1C.45     
      INTEGER!, INTENT(IN) ::                                              LWTRAN1C.47     
     &     L                        ! NUMBER OF POINTS                     LWTRAN1C.48     
      REAL!, INTENT(IN) ::                                                 LWTRAN1C.50     
     &     PATH (L,NGASUS,NBANDS),  ! SCALED PATHLENGTHS FOR EACH GAS      LWTRAN1C.51     
     &     TRTAB(IT,NBANDS,NSCGMX), ! TRANSMISSIVITY LOOK-UP TABLE         LWTRAN1C.52     
     &     DTRTAB(IT,NBANDS,NSCGMX) ! TABLE OF DIFFERENCES                 LWTRAN1C.53     
      REAL!, INTENT(OUT) ::                                                LWTRAN1C.54     
     &     TRANS(L,NBANDS)          ! TRANSMISSIVITIES                     LWTRAN1C.55     
C*                                                                         LWTRAN1C.56     
CL    !  NO EXTERNAL ROUTINES CALLED                                       LWTRAN1C.57     
C                                                                          LWTRAN1C.63     
      REAL RLNR10,               ! NDEC/LN(10)                             LWTRAN1C.64     
     &     TGAS,                 ! TRANSMISSIVITY DUE TO A SINGLE "GAS"    LWTRAN1C.65     
     &     Y(L,NBANDS)           ! USED IN THE INTERPOLATION               LWTRAN1C.66     
      INTEGER JTRANS, GAS, J,    ! LOOP OVER TRANSMISSIVITY, GAS, POINT    LWTRAN1C.67     
     &     BAND,                 ! AND BAND                                LWTRAN1C.68     
     &     I(L,NBANDS)           ! INT(Y)                                  LWTRAN1C.69     
     &     ,NCONT                ! LOOP OVER CONTINUA                      LWTRAN1C.70     
C                                                                          LWTRAN1C.71     
      RLNR10 = REAL(NDEC) / LOG(10.)     ! CANNOT PUT THIS IN A            LWTRAN1C.72     
C     !  PARAMETER STATEMENT IN FORTRAN77, BUT THE CRAY COMPILER'S         LWTRAN1C.73     
C     !  OPTIMIZER WILL MAKE IT HAVE THE SAME EFFECT AS IF IT WERE.        LWTRAN1C.74     
C                                                                          LWTRAN1C.75     
C     !  FIRST, INITIALIZE THE TRANSMISSIVITIES TO 1 - WE WILL ASSUME      LWTRAN1C.76     
C     !  RANDOM OVERLAP OF LINES OF DIFFERENT GASES, SO THAT THE TOTAL     LWTRAN1C.77     
C     !  TRANSMISSIVITY IN EACH BAND IS THE PRODUCT OF THE                 LWTRAN1C.78     
C     !  TRANSMISSIVITIES FOR THE INDIVIDUAL GASES.                        LWTRAN1C.79     
C                                                                          LWTRAN1C.80     
C     !  INITIALISE OFFSET & START OF TABLE                                LWTRAN1C.81     
          DO 710 GAS=1,NSCGUS                                              LWTRAN1C.82     
            OFFSET(GAS)=1.-LOG10S(GAS)*NDEC                                LWTRAN1C.83     
            ZSTART(GAS)=10.**LOG10S(GAS)                                   LWTRAN1C.84     
 710      CONTINUE                                                         LWTRAN1C.85     
C                                                                          LWTRAN1C.86     
C     !  INITIALIZE THE TRANSMISSIVITIES TO 1 - WE WILL ASSUME             LWTRAN1C.87     
C     !  RANDOM OVERLAP OF LINES OF DIFFERENT GASES, SO THAT THE TOTAL     LWTRAN1C.88     
C     !  TRANSMISSIVITY IN EACH BAND IS THE PRODUCT OF THE                 LWTRAN1C.89     
C     !  TRANSMISSIVITIES FOR THE INDIVIDUAL GASES.                        LWTRAN1C.90     
                                                                           LWTRAN1C.91     
      DO 1 JTRANS=1, NBANDS                                                LWTRAN1C.92     
CFPP$  SELECT(CONCUR)                                                      LWTRAN1C.93     
       DO 1 J=1, L                                                         LWTRAN1C.94     
        TRANS(J,JTRANS) = 1.                                               LWTRAN1C.95     
    1 CONTINUE                                                             LWTRAN1C.96     
C                                                                          LWTRAN1C.97     
C     ! LOOP THROUGH BANDS AND                                             LWTRAN1C.98     
C     ! LOOP THROUGH THOSE EFFECTIVE GASES WHICH USE LOOK-UP TABLES        LWTRAN1C.99     
C                                                                          LWTRAN1C.100    
      DO 2 JTRANS = 1,NBANDS                                               LWTRAN1C.101    
C                                                                          LWTRAN1C.102    
        DO 210 GAS = 1,nscgus                                              LWTRAN1C.103    
          IF (GSINBS(GAS,JTRANS).EQ.1) THEN                                LWTRAN1C.104    
CFPP$  SELECT(CONCUR)                                                      LWTRAN1C.105    
            DO 20 J=1, L                                                   LWTRAN1C.106    
             Y(J,JTRANS)=LOG(PATH(J,GAS,JTRANS))*RLNR10+OFFSET(GAS)        LWTRAN1C.110    
C OFFSET ALLLOWS FOR THE START-POINT OF THE TABLES (SAME FOR ALL GASES).   LWTRAN1C.112    
C IT COULD BE REMOVED BY GIVING (D)TRTAB DIFFERENT BOUNDS, BUT MY          LWTRAN1C.113    
             I(J,JTRANS) = INT(Y(J,JTRANS))                                LWTRAN1C.114    
             Y(J,JTRANS) = Y(J,JTRANS) - REAL(I(J,JTRANS))                 LWTRAN1C.115    
             IF (I(J,JTRANS).GT.IT) I(J,JTRANS) = IT                       LWTRAN1C.116    
C                                                                          LWTRAN1C.117    
                IF (I(J,JTRANS).GE.1) THEN                                 LWTRAN1C.118    
                  TGAS = TRTAB(I(J,JTRANS),JTRANS,GAS) +                   LWTRAN1C.119    
     &                 Y(J,JTRANS)*DTRTAB(I(J,JTRANS),JTRANS,GAS)          LWTRAN1C.120    
                ELSE                                                       LWTRAN1C.121    
                  TGAS =                                                   LWTRAN1C.122    
     &    1.-(1.-TRTAB(1,JTRANS,GAS))*PATH(J,GAS,JTRANS)/ZSTART(GAS)       LWTRAN1C.123    
                ENDIF                                                      LWTRAN1C.124    
!   ASSUME RANDOM OVERLAP OF LINES OF DIFFERENT GASES, SO THAT             LWTRAN1C.125    
!   THE TOTAL TRANSMISSIVITY IS THE PRODUCT OF THE                         LWTRAN1C.126    
!   TRANSMISSIVITIES FOR THE INDIVIDUAL GASES:                             LWTRAN1C.127    
               TRANS(J,JTRANS) = TRANS(J,JTRANS) * TGAS                    LWTRAN1C.128    
   20      CONTINUE                                                        LWTRAN1C.129    
         END IF                                                            LWTRAN1C.130    
  210  CONTINUE                                                            LWTRAN1C.131    
C                                                                          LWTRAN1C.132    
C                                                                          LWTRAN1C.133    
C                                                                          LWTRAN1C.134    
    2 CONTINUE                                                             LWTRAN1C.135    
C                                                                          LWTRAN1C.136    
C     ! CFC IN WEAK LIMIT SO JUST USE EXPONENTIALS                         LWTRAN1C.137    
C     !  AGAIN, TRANSMISSIVITIES JUST MULTIPLY:                            LWTRAN1C.138    
C                                                                          LWTRAN1C.139    
      DO 40 JTRANS = 1,NBANDS                                              LWTRAN1C.140    
        IF (GSINBS(NCFC11,JTRANS).EQ.1) THEN                               LWTRAN1C.155    
          DO 43 J = 1,L                                                    LWTRAN1C.156    
            TRANS(J,JTRANS) = TRANS(J,JTRANS)*EXP(KCFC11(JTRANS)           LWTRAN1C.157    
     &                                    *PATH(J,NCFC11,JTRANS))          LWTRAN1C.158    
 43       CONTINUE                                                         LWTRAN1C.159    
        END IF                                                             LWTRAN1C.160    
        IF (GSINBS(NCFC12,JTRANS).EQ.1) THEN                               LWTRAN1C.161    
          DO 44 J = 1,L                                                    LWTRAN1C.162    
            TRANS(J,JTRANS) = TRANS(J,JTRANS)*EXP(KCFC12(JTRANS)           LWTRAN1C.163    
     &                                    *PATH(J,NCFC12,JTRANS))          LWTRAN1C.164    
 44       CONTINUE                                                         LWTRAN1C.165    
        END IF                                                             LWTRAN1C.166    
 40   CONTINUE                                                             LWTRAN1C.168    
C                                                                          LWTRAN1C.169    
      RETURN                                                               LWTRAN1C.170    
      END                                                                  LWTRAN1C.171    
C                                                                          LWTRAN1C.172    
C                                                                          LWTRAN1C.173    
C                                                                          LWTRAN1C.174    

      SUBROUTINE LWLKIN (LWLUT)                                             2LWTRAN1C.175    
C                                                                          LWTRAN1C.176    
*CALL LWNBANDS                                                             LWTRAN1C.177    
*CALL LWNGASES                                                             LWTRAN1C.178    
*CALL LWNLKUPS                                                             LWTRAN1C.179    
C                                                                          LWTRAN1C.180    
      REAL!, INTENT(OUT)                                                   LWTRAN1C.181    
     &     LWLUT(IT,NBANDS,NSCGMX,2)                                       LWTRAN1C.182    
      REAL TRTAB(IT,NBANDS,NSCGMX)                                         LWTRAN1C.183    
      INTEGER JTRANS, GAS, J,    ! LOOP OVER TRANSMISSIVITY, GAS & POINT   LWTRAN1C.184    
     &     NUNUSE                ! NUMBER OF UNUSED ELEMENTS IN TRTAB      LWTRAN1C.185    
*CALL LWLKUPNU                                                             LWTRAN1C.186    
      PARAMETER (NUNUSE = 33*IT)                                           LWTRAN1C.187    
C     !  INITIALIZE UNUSED PARTS TO ONE TO PREVENT INDEF PROBLEMS          LWTRAN1C.188    
C     ! ( 1. BECAUSE THAT IS TRANSMISSIVITY IF NO GAS PRESENT )            LWTRAN1C.189    
      DATA ((TRTAB(J,JTRANS,NCO2),J=1,IT),JTRANS=1,2),                     LWTRAN1C.190    
     &      (TRTAB(J, 4    ,NCO2),J=1,IT) ,                                LWTRAN1C.191    
     &     ((TRTAB(J,JTRANS,NCO2),J=1,IT),JTRANS=7,9),                     LWTRAN1C.192    
     &     ((TRTAB(J,JTRANS,NO3),J=1,IT),JTRANS=1,2),                      LWTRAN1C.193    
     &     ((TRTAB(J,JTRANS,NO3),J=1,IT),JTRANS=4,5),                      LWTRAN1C.194    
     &     ((TRTAB(J,JTRANS,NO3),J=1,IT),JTRANS=7,9),                      LWTRAN1C.195    
     &     ((TRTAB(J,JTRANS,NN2O),J=1,IT),JTRANS=1,2),                     LWTRAN1C.196    
     &     ((TRTAB(J,JTRANS,NN2O),J=1,IT),JTRANS=4,6),                     LWTRAN1C.197    
     &      (TRTAB(J, 9    ,NN2O),J=1,IT) ,                                LWTRAN1C.198    
     &     ((TRTAB(J,JTRANS,NCH4),J=1,IT),JTRANS=1,7),                     LWTRAN1C.199    
c    &      (TRTAB(J, 9    ,NCH4),J=1,IT) ,                                LWTRAN1C.200    
     &      (TRTAB(J, 9    ,NCH4),J=1,IT),                                 LWTRAN1C.201    
     &      (TRTAB(J, 1    ,NH2OS),J=1,IT) ,                               LWTRAN1C.202    
     &      (TRTAB(J, 9   ,NH2OS),J=1,IT) ,                                LWTRAN1C.203    
c    &     ((TRTAB(J,JTRANS,NH2OS),J=1,IT),JTRANS=8,9),                    LWTRAN1C.204    
     &      (TRTAB(J, 9    ,NH2OF),J=1,IT) ,                               LWTRAN1C.205    
     &     ((TRTAB(J,JTRANS,NH2OF),J=1,IT),JTRANS=5,7)                     LWTRAN1C.206    
     &     / NUNUSE*1.0/                                                   LWTRAN1C.207    
C                                                                          LWTRAN1C.208    
      DO 1 GAS=1, NSCGUS                                                   LWTRAN1C.209    
       DO 1 JTRANS=1, NBANDS                                               LWTRAN1C.210    
        DO 1 J=1, IT                                                       LWTRAN1C.211    
         LWLUT(J,JTRANS,GAS,1) = TRTAB(J,JTRANS,GAS)                       LWTRAN1C.212    
    1 CONTINUE                                                             LWTRAN1C.213    
C                                                                          LWTRAN1C.214    
      DO 2 GAS=1, NSCGUS                                                   LWTRAN1C.215    
       DO 2 JTRANS=1, NBANDS                                               LWTRAN1C.216    
        DO 2 J=1, IT-1                                                     LWTRAN1C.217    
         LWLUT(J,JTRANS,GAS,2) =                                           LWTRAN1C.218    
     &    LWLUT(J+1,JTRANS,GAS,1) - LWLUT(J,JTRANS,GAS,1)                  LWTRAN1C.219    
    2 CONTINUE                                                             LWTRAN1C.220    
C                                                                          LWTRAN1C.221    
C     ! SET THE LAST ELEMENT FOR EACH GAS AND BAND TO ZERO, SO THAT THE    LWTRAN1C.222    
C     ! EXTRAPOLATION DONE FOR ANY PATHLENGTH GREATER THAN THE MAXIMUM     LWTRAN1C.223    
C     ! CATERED FOR JUST GIVES THE GREATEST VALUE IN TRTAB.                LWTRAN1C.224    
C                                                                          LWTRAN1C.225    
      DO 3 GAS=1, NSCGUS                                                   LWTRAN1C.226    
       DO 3 JTRANS=1, NBANDS                                               LWTRAN1C.227    
        LWLUT(IT,JTRANS,GAS,2) = 0.                                        LWTRAN1C.228    
    3 CONTINUE                                                             LWTRAN1C.229    
C                                                                          LWTRAN1C.230    
      RETURN                                                               LWTRAN1C.231    
      END                                                                  LWTRAN1C.232    
*ENDIF A02_1C                                                              LWTRAN1C.233