*IF DEF,A05_3C                                                             LAYCN3C.2      
C ******************************COPYRIGHT******************************    LAYCN3C.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    LAYCN3C.4      
C                                                                          LAYCN3C.5      
C Use, duplication or disclosure of this code is subject to the            LAYCN3C.6      
C restrictions as set forth in the contract.                               LAYCN3C.7      
C                                                                          LAYCN3C.8      
C                Meteorological Office                                     LAYCN3C.9      
C                London Road                                               LAYCN3C.10     
C                BRACKNELL                                                 LAYCN3C.11     
C                Berkshire UK                                              LAYCN3C.12     
C                RG12 2SZ                                                  LAYCN3C.13     
C                                                                          LAYCN3C.14     
C If no contract has been raised with this copy of the code, the use,      LAYCN3C.15     
C duplication or disclosure of it is strictly prohibited.  Permission      LAYCN3C.16     
C to do so must first be obtained in writing from the Head of Numerical    LAYCN3C.17     
C Modelling at the above address.                                          LAYCN3C.18     
C ******************************COPYRIGHT******************************    LAYCN3C.19     
C                                                                          LAYCN3C.20     
CLL  SUBROUTINE LAYER_CN-----------------------------------------------    LAYCN3C.21     
CLL                                                                        LAYCN3C.22     
CLL  PURPOSE : CALCULATES LAYER DEPENDENT CONSTANTS FOR LAYER K            LAYCN3C.23     
CLL            -PRESSURE                                                   LAYCN3C.24     
CLL            -LAYER THICKNESS                                            LAYCN3C.25     
CLL            -ENTRAINMENT COEFFICIENTS                                   LAYCN3C.26     
CLL            -DETRAINMENT COEFFICIENTS                                   LAYCN3C.27     
CLL                                                                        LAYCN3C.28     
CLL  SUITABLE FOR SINGLE COLUMN MODEL USE                                  LAYCN3C.29     
CLL                                                                        LAYCN3C.30     
CLL C.W. , D.G. <- PROGRAMMER OF SOME OR ALL OF PREVIOUS CODE OR CHANGES   LAYCN3C.31     
CLL                                                                        LAYCN3C.32     
CLL  MODEL            MODIFICATION HISTORY:                                LAYCN3C.33     
CLL VERSION  DATE                                                          LAYCN3C.34     
!LL   4.4   11/08/97  New version optimised for T3E.                       LAYCN3C.35     
!LL                   Not bit-reproducible with LAYCN1A.                   LAYCN3C.36     
!LL                                                    Alan Dickinson      LAYCN3C.37     
CLL                                                                        LAYCN3C.38     
CLL  PROGRAMMING STANDARDS :                                               LAYCN3C.39     
CLL                                                                        LAYCN3C.40     
CLL  LOGICAL COMPONENTS COVERED:P27                                        LAYCN3C.41     
CLL                                                                        LAYCN3C.42     
CLL  DOCUMENTATION : UNIFIED MODEL DOCUMENTATION PAPER 27                  LAYCN3C.43     
CLL                                                                        LAYCN3C.44     
CLLEND-----------------------------------------------------------------    LAYCN3C.45     
C                                                                          LAYCN3C.46     
C*L  ARGUMENTS---------------------------------------------------------    LAYCN3C.47     
C                                                                          LAYCN3C.48     

      SUBROUTINE LAYER_CN(K,NP_FIELD,NPNTS,NLEV,EXNER,AK,BK,AKM12,BKM12,    4LAYCN3C.49     
     *                    DELAK,DELBK,PSTAR,PK,PKP1,DELPK,DELPKP1,         LAYCN3C.50     
     *                    DELPKP12,EKP14,EKP34,AMDETK,EXK,EXKP1,           LAYCN3C.51     
     *                    DELEXKP1,recip_PSTAR)                            LAYCN3C.52     
      IMPLICIT NONE                                                        LAYCN3C.53     
C                                                                          LAYCN3C.54     
C----------------------------------------------------------------------    LAYCN3C.55     
C MODEL CONSTANTS                                                          LAYCN3C.56     
C----------------------------------------------------------------------    LAYCN3C.57     
C                                                                          LAYCN3C.58     
*CALL ENTCNST                                                              LAYCN3C.59     
*CALL C_R_CP                                                               LAYCN3C.60     
C                                                                          LAYCN3C.61     
C----------------------------------------------------------------------    LAYCN3C.62     
C VECTOR LENGTHS AND LOOP COUNTER                                          LAYCN3C.63     
C----------------------------------------------------------------------    LAYCN3C.64     
C                                                                          LAYCN3C.65     
      INTEGER NP_FIELD          ! IN FULL LENGTH OF DATA                   LAYCN3C.66     
C                                                                          LAYCN3C.67     
      INTEGER NPNTS             ! IN VECTOR LENGTH                         LAYCN3C.68     
C                                                                          LAYCN3C.69     
      INTEGER NLEV              ! IN NUMBER OF MODEL LEVELS                LAYCN3C.70     
C                                                                          LAYCN3C.71     
      INTEGER K                 ! IN PRESENT MODEL LAYER                   LAYCN3C.72     
C                                                                          LAYCN3C.73     
      INTEGER I                 ! COUNTER FOR DO LOOPS                     LAYCN3C.74     
C                                                                          LAYCN3C.75     
C                                                                          LAYCN3C.76     
C----------------------------------------------------------------------    LAYCN3C.77     
C VARIABLES WHICH ARE INPUT                                                LAYCN3C.78     
C----------------------------------------------------------------------    LAYCN3C.79     
C                                                                          LAYCN3C.80     
      REAL AK(NLEV)             ! IN ) HYBRID CO-ORDINATE VALUES AT        LAYCN3C.81     
      REAL BK(NLEV)             ! IN ) MID-LAYER OF LAYER K                LAYCN3C.82     
C                                                                          LAYCN3C.83     
      REAL AKM12(NLEV+1)        ! IN ) HYBRID CO-ORDINATE VALUES AT        LAYCN3C.84     
      REAL BKM12(NLEV+1)        ! IN ) LOWER LAYER BOUNDARY OF LAYER K     LAYCN3C.85     
C                                                                          LAYCN3C.86     
      REAL DELAK(NLEV)          ! IN ) HYBRID CO-ORDINATE VALUES FOR       LAYCN3C.87     
      REAL DELBK(NLEV)          ! IN ) FOR THICKNESS OF LAYER K            LAYCN3C.88     
C                                                                          LAYCN3C.89     
      REAL PSTAR(NP_FIELD)      ! IN SURFACE PRESSURE (PA)                 LAYCN3C.90     
C                                                                          LAYCN3C.91     
      REAL EXNER(NP_FIELD,NLEV+1) ! IN EXNER FUNCTION AT LAYER             LAYCN3C.92     
                                  ! BOUNDARIES STARTING AT LEVEL K-1/2     LAYCN3C.93     
C                                                                          LAYCN3C.94     
C                                                                          LAYCN3C.95     
C----------------------------------------------------------------------    LAYCN3C.96     
C VARIABLES WHICH ARE OUTPUT                                               LAYCN3C.97     
C----------------------------------------------------------------------    LAYCN3C.98     
C                                                                          LAYCN3C.99     
      REAL PK(NPNTS)            ! OUT PRESSURE AT LAYER K (PA)             LAYCN3C.100    
C                                                                          LAYCN3C.101    
      REAL PKP1(NPNTS)          ! OUT PRESSURE AT LAYER K+1 (PA)           LAYCN3C.102    
C                                                                          LAYCN3C.103    
      REAL DELPK(NPNTS)         ! OUT THICKNESS OF LAYER K (PA)            LAYCN3C.104    
C                                                                          LAYCN3C.105    
      REAL DELPKP1(NPNTS)       ! OUT THICHNESS OF LAYER K+1 (PA)          LAYCN3C.106    
C                                                                          LAYCN3C.107    
      REAL DELPKP12(NPNTS)      ! OUT THICKNESS BETWEEN LAYER K AND K+1    LAYCN3C.108    
                                !     (PA)                                 LAYCN3C.109    
C                                                                          LAYCN3C.110    
      REAL EKP14(NPNTS)         ! OUT ENTRAINMENT COEFFICIENT AT           LAYCN3C.111    
                                !     LEVEL K+1/4 MULTIPLIED BY            LAYCN3C.112    
                                !     APPROPRIATE LAYER THICKNESS          LAYCN3C.113    
C                                                                          LAYCN3C.114    
      REAL EKP34(NPNTS)         ! OUT ENTRAINMENT COEFFICIENT AT           LAYCN3C.115    
                                !     LEVEL K+3/4 MULTIPLIED BY            LAYCN3C.116    
                                !     APPROPRIATE LAYER THICKNESS          LAYCN3C.117    
C                                                                          LAYCN3C.118    
      REAL AMDETK(NPNTS)        ! OUT MIXING DETRAINMENT COEFFICIENT       LAYCN3C.119    
                                !     AT LEVEL K MULTIPLIED BY             LAYCN3C.120    
                                !     APPROPRIATE LAYER THICKNESS          LAYCN3C.121    
C                                                                          LAYCN3C.122    
      REAL EXK(NPNTS)           ! EXNER FUNCTION AT LEVEL K                LAYCN3C.123    
C                                                                          LAYCN3C.124    
      REAL EXKP1(NPNTS)         ! EXNER FUNCTION AT LEVEL K+1              LAYCN3C.125    
C                                                                          LAYCN3C.126    
      REAL DELEXKP1(NPNTS)      ! DIFFERENCE IN EXNER FUNCTION             LAYCN3C.127    
                                ! BETWEEN K+3/2 AND K+1/2                  LAYCN3C.128    
C                                                                          LAYCN3C.129    
C                                                                          LAYCN3C.130    
C----------------------------------------------------------------------    LAYCN3C.131    
C VARIABLES WHICH ARE DEFINED LOCALLY                                      LAYCN3C.132    
C----------------------------------------------------------------------    LAYCN3C.133    
C                                                                          LAYCN3C.134    
      REAL AEKP14,AEKP34        ! USED IN CALCULATION OF ENTRAINMENT       LAYCN3C.135    
                                ! RATE                                     LAYCN3C.136    
C                                                                          LAYCN3C.137    
                                                                           LAYCN3C.138    
      REAL                                                                 LAYCN3C.139    
     &    PU,PL                                                            LAYCN3C.140    
      REAL recip_PSTAR(NP_FIELD)  ! Reciprocal of pstar array              LAYCN3C.141    
*CALL P_EXNERC                                                             LAYCN3C.142    
                                                                           LAYCN3C.143    
C*---------------------------------------------------------------------    LAYCN3C.144    
C                                                                          LAYCN3C.145    
C----------------------------------------------------------------------    LAYCN3C.146    
C SET CONSTANT AE USED IN CALCULATION OF ENTARINMENT AND                   LAYCN3C.147    
C DETRAINMENT RATES DEPENDING UPON LEVEL                                   LAYCN3C.148    
C----------------------------------------------------------------------    LAYCN3C.149    
C                                                                          LAYCN3C.150    
      IF(K.EQ.1)THEN                                                       LAYCN3C.151    
        AEKP14 = AE1                                                       LAYCN3C.152    
        AEKP34 = AE2                                                       LAYCN3C.153    
      ELSE                                                                 LAYCN3C.154    
        AEKP14 = AE2                                                       LAYCN3C.155    
        AEKP34 = AE2                                                       LAYCN3C.156    
      END IF                                                               LAYCN3C.157    
C                                                                          LAYCN3C.158    
      DO 10 I=1,NPNTS                                                      LAYCN3C.159    
CL                                                                         LAYCN3C.160    
CL---------------------------------------------------------------------    LAYCN3C.161    
CL CALCULATE PK AND DELPK - IF K = 1 (LOWEST MODEL LAYER) THEN             LAYCN3C.162    
CL VALUES FOR PREVIOUS PASS THROUGH ROUTINE AT (K-1)+1 ARE TAKEN           LAYCN3C.163    
CL---------------------------------------------------------------------    LAYCN3C.164    
CL                                                                         LAYCN3C.165    
        IF(K.EQ.1)THEN                                                     LAYCN3C.166    
          PK(I) = AK(K) + BK(K)*PSTAR(I)                                   LAYCN3C.167    
          DELPK(I) = -DELAK(K) - DELBK(K)*PSTAR(I)                         LAYCN3C.168    
        ELSE                                                               LAYCN3C.169    
          PK(I) = PKP1(I)                                                  LAYCN3C.170    
          DELPK(I) = DELPKP1(I)                                            LAYCN3C.171    
        END IF                                                             LAYCN3C.172    
CL                                                                         LAYCN3C.173    
CL---------------------------------------------------------------------    LAYCN3C.174    
CL CALCULATE PKP1, DELPKP1 AND DELPK+1/2                                   LAYCN3C.175    
CL---------------------------------------------------------------------    LAYCN3C.176    
CL                                                                         LAYCN3C.177    
        PKP1(I) = AK(K+1) + BK(K+1)*PSTAR(I)                               LAYCN3C.178    
        DELPKP1(I) = -DELAK(K+1) - DELBK(K+1)*PSTAR(I)                     LAYCN3C.179    
        DELPKP12(I) = PK(I) - PKP1(I)                                      LAYCN3C.180    
CL                                                                         LAYCN3C.181    
CL---------------------------------------------------------------------    LAYCN3C.182    
CL CALCULATE EXNER FUNCTIONS AT MID-LAYES K AND K+1, AND                   LAYCN3C.183    
CL DIFFERENCE OF EXNER FUNCTION ACROSS LAYER K                             LAYCN3C.184    
CL---------------------------------------------------------------------    LAYCN3C.185    
CL                                                                         LAYCN3C.186    
        IF(K.EQ.1)THEN                                                     LAYCN3C.187    
          PU=PSTAR(I)*BKM12(K+1) + AKM12(K+1)                              LAYCN3C.188    
          PL=PSTAR(I)*BKM12(K) + AKM12(K)                                  LAYCN3C.189    
          EXK(I) = P_EXNER_C(EXNER(I,K+1),EXNER(I,K),PU,PL,KAPPA)          LAYCN3C.190    
        ELSE                                                               LAYCN3C.191    
          EXK(I) = EXKP1(I)                                                LAYCN3C.192    
        END IF                                                             LAYCN3C.193    
        PU=PSTAR(I)*BKM12(K+2) + AKM12(K+2)                                LAYCN3C.194    
        PL=PSTAR(I)*BKM12(K+1) + AKM12(K+1)                                LAYCN3C.195    
        EXKP1(I) = P_EXNER_C(EXNER(I,K+2),EXNER(I,K+1),PU,PL,KAPPA)        LAYCN3C.196    
        DELEXKP1(I) = EXNER(I,K+1)-EXNER(I,K+2)                            LAYCN3C.197    
CL                                                                         LAYCN3C.198    
CL---------------------------------------------------------------------    LAYCN3C.199    
CL CALCULATE ENTRAINMENT AND MIXING DETRAINMENT COEFFICIENTS               LAYCN3C.200    
CL---------------------------------------------------------------------    LAYCN3C.201    
CL                                                                         LAYCN3C.202    
CL                                                                         LAYCN3C.203    
CL---------------------------------------------------------------------    LAYCN3C.204    
CL CALCULATE ENTRAINMENT COEFFICIENTS MULTIPLIED BY                        LAYCN3C.205    
CL APPROPRIATE LAYER THICKNESS                                             LAYCN3C.206    
CL                                                                         LAYCN3C.207    
CL UM DOCUMENTATION PAPER 27                                               LAYCN3C.208    
CL SECTION (2C), EQUATION(14)                                              LAYCN3C.209    
CL---------------------------------------------------------------------    LAYCN3C.210    
CL                                                                         LAYCN3C.211    
        EKP14(I) = ENTCOEF * AEKP14 * PK(I) *                              LAYCN3C.212    
     *             (PK(I) - AKM12(K+1) - BKM12(K+1)*PSTAR(I)) *            LAYCN3C.213    
     *              recip_PSTAR(I)*recip_PSTAR(I)                          LAYCN3C.214    
        EKP34(I) = ENTCOEF * AEKP34 * (AKM12(K+1)+BKM12(K+1)*PSTAR(I)) *   LAYCN3C.215    
     *             (AKM12(K+1) + BKM12(K+1)*PSTAR(I) - PKP1(I)) *          LAYCN3C.216    
     *              recip_PSTAR(I)*recip_PSTAR(I)                          LAYCN3C.217    
CL                                                                         LAYCN3C.218    
CL---------------------------------------------------------------------    LAYCN3C.219    
CL CALCULATE MIXING DETRAINMENT COEFFICIENT MULTIPLIED BY                  LAYCN3C.220    
CL APPROPRIATE LAYER THICKNESS                                             LAYCN3C.221    
CL                                                                         LAYCN3C.222    
CL UM DOCUMENTATION PAPER 27                                               LAYCN3C.223    
CL SECTION (2C), EQUATION(15)                                              LAYCN3C.224    
CL---------------------------------------------------------------------    LAYCN3C.225    
CL                                                                         LAYCN3C.226    
        IF(K.EQ.1)THEN                                                     LAYCN3C.227    
          AMDETK(I) = 0.0                                                  LAYCN3C.228    
        ELSE                                                               LAYCN3C.229    
          AMDETK(I) = (EKP14(I) + EKP34(I)) * (1.0-1.0/AEKP34)             LAYCN3C.230    
        END IF                                                             LAYCN3C.231    
 10   CONTINUE                                                             LAYCN3C.232    
C                                                                          LAYCN3C.233    
      RETURN                                                               LAYCN3C.234    
      END                                                                  LAYCN3C.235    
*ENDIF                                                                     LAYCN3C.236