*IF DEF,A03_7A ACB1F405.1
C *****************************COPYRIGHT****************************** BOUYTQ5B.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. BOUYTQ5B.4
C BOUYTQ5B.5
C Use, duplication or disclosure of this code is subject to the BOUYTQ5B.6
C restrictions as set forth in the contract. BOUYTQ5B.7
C BOUYTQ5B.8
C Meteorological Office BOUYTQ5B.9
C London Road BOUYTQ5B.10
C BRACKNELL BOUYTQ5B.11
C Berkshire UK BOUYTQ5B.12
C RG12 2SZ BOUYTQ5B.13
C BOUYTQ5B.14
C If no contract has been raised with this copy of the code, the use, BOUYTQ5B.15
C duplication or disclosure of it is strictly prohibited. Permission BOUYTQ5B.16
C to do so must first be obtained in writing from the Head of Numerical BOUYTQ5B.17
C Modelling at the above address. BOUYTQ5B.18
C ******************************COPYRIGHT****************************** BOUYTQ5B.19
! BOUYTQ5B.20
! SUBROUTINE BOUY_TQ BOUYTQ5B.21
BOUYTQ5B.22
! PURPOSE: To calculate buoyancy parameters BT and BQ BOUYTQ5B.23
! BOUYTQ5B.24
! METHOD: BOUYTQ5B.25
! BOUYTQ5B.26
! ORIGINAL PROGRAMMER: J James BOUYTQ5B.27
! CURRENT CODE OWNER: RNB Smith BOUYTQ5B.28
! BOUYTQ5B.29
! HISTORY: BOUYTQ5B.30
! DATE VERSION COMMENT BOUYTQ5B.31
! ---- ------- ------- BOUYTQ5B.32
! new deck BOUYTQ5B.33
! 4.4 29/10/97 K loops extended to give surface buoyancy parameters ARE1F404.108
! R. Essery ARE1F404.109
! 8/9/97 4.4 L_BL_LSPICE specifies mixed phase precipitation ADM3F404.357
! scheme D.Wilson ADM3F404.358
! 4.5 Jul. 98 Kill the IBM specific lines. (JCThil) AJC1F405.311
! BOUYTQ5B.34
! CODE DESCRIPTION: BOUYTQ5B.35
! LANGUAGE: FORTRAN 77 + CRAY EXTENSIONS BOUYTQ5B.36
! THIS CODE IS WRITTEN TO UMDP3 PROGRAMMING STANDARDS. BOUYTQ5B.37
! BOUYTQ5B.38
! SYSTEM COMPONENT COVERED: ?? BOUYTQ5B.39
! SYSTEM TASK: ?? BOUYTQ5B.40
BOUYTQ5B.41
BOUYTQ5B.42
BOUYTQ5B.43
SUBROUTINE BOUY_TQ ( 2,7BOUYTQ5B.44
& P_FIELD,P1 BOUYTQ5B.45
&,P_POINTS,BL_LEVELS,P BOUYTQ5B.46
&,CF,Q,QCF,QCL,T BOUYTQ5B.47
&,TL,BT,BQ,BF ADM3F404.359
&,L_BL_LSPICE,LTIMER ADM3F404.360
& ) BOUYTQ5B.50
BOUYTQ5B.51
IMPLICIT NONE BOUYTQ5B.52
BOUYTQ5B.53
! ARGUMENTS WITH INTENT IN. IE: INPUT VARIABLES. BOUYTQ5B.54
BOUYTQ5B.55
LOGICAL LTIMER ! IN Flag for TIMER diagnostics BOUYTQ5B.56
&, L_BL_LSPICE !IN ADM3F404.361
! TRUE Use scientific treatment of mixed ADM3F404.362
! phase precip scheme. ADM3F404.363
! FALSE Do not use mixed phase precip ADM3F404.364
! considerations ADM3F404.365
BOUYTQ5B.57
INTEGER BOUYTQ5B.58
& P_FIELD ! IN No. of P-grid points in whole field. BOUYTQ5B.59
&,P1 ! IN First P-grid point to be processed. BOUYTQ5B.60
&,P_POINTS ! IN No. of P-grid points to be processed. BOUYTQ5B.61
&,BL_LEVELS ! IN No. of atmospheric levels for which BOUYTQ5B.68
! boundary layer fluxes are calculated. BOUYTQ5B.69
! Assumed <=30 for dimensioning GAMMA() BOUYTQ5B.70
! in common deck C_GAMMA BOUYTQ5B.71
BOUYTQ5B.72
REAL BOUYTQ5B.73
& P(P_FIELD,BL_LEVELS) ! IN Pressure at pressure points. BOUYTQ5B.74
&,T(P_FIELD,BL_LEVELS) ! IN Temperature (K). At P points BOUYTQ5B.75
&,TL(P_FIELD,BL_LEVELS) ! IN Liquid/frozen water temperature BOUYTQ5B.76
&,Q(P_FIELD,BL_LEVELS) ! IN Sp humidity (kg water per kg air). BOUYTQ5B.77
&,QCL(P_FIELD,BL_LEVELS) ! IN Cloud liq water (kg per kg air). BOUYTQ5B.78
&,QCF(P_FIELD,BL_LEVELS) ! IN Cloud liq water (kg per kg air). BOUYTQ5B.79
&,CF(P_FIELD,BL_LEVELS) ! IN Cloud fractions for boundary levs. BOUYTQ5B.80
BOUYTQ5B.81
BOUYTQ5B.82
! ARGUMENTS WITH INTENT OUT. IE: OUTPUT VARIABLES. BOUYTQ5B.83
BOUYTQ5B.84
REAL BOUYTQ5B.85
& BQ(P_FIELD,BL_LEVELS) ! OUT A buoyancy parameter (beta q tilde) BOUYTQ5B.86
&,BT(P_FIELD,BL_LEVELS) ! OUT A buoyancy parameter (beta T tilde) BOUYTQ5B.87
&,BF(P_FIELD,BL_LEVELS) ! OUT A buoyancy parameter (beta F tilde) ADM3F404.366
BOUYTQ5B.88
! LOCAL VARIABLES. BOUYTQ5B.89
BOUYTQ5B.90
REAL BOUYTQ5B.91
& QSL(P_FIELD,BL_LEVELS) ! WORK Cloud liq water (kg per kg air). BOUYTQ5B.92
BOUYTQ5B.93
INTEGER BOUYTQ5B.94
& I BOUYTQ5B.95
&, K BOUYTQ5B.96
BOUYTQ5B.97
REAL BOUYTQ5B.98
& BETAT BOUYTQ5B.99
&, BETAQ BOUYTQ5B.100
&, BETAC BOUYTQ5B.101
&, ALPHAL BOUYTQ5B.102
&, AL BOUYTQ5B.103
BOUYTQ5B.104
EXTERNAL BOUYTQ5B.105
& QSAT,QSAT_WAT,TIMER ADM3F404.367
BOUYTQ5B.107
*CALL C_0_DG_C
BOUYTQ5B.108
*CALL C_LHEAT
BOUYTQ5B.109
*CALL C_G
BOUYTQ5B.110
*CALL C_R_CP
BOUYTQ5B.111
*CALL C_EPSLON
BOUYTQ5B.112
*CALL C_VKMAN
BOUYTQ5B.113
*CALL C_SOILH
BOUYTQ5B.114
*CALL C_MDI
BOUYTQ5B.115
BOUYTQ5B.116
BOUYTQ5B.117
REAL ETAR,GRCP,LCRCP,LFRCP,LS,LSRCP BOUYTQ5B.118
PARAMETER ( BOUYTQ5B.119
& ETAR=1.0/(1.0-EPSILON) ! Used in buoyancy parameter BETAC. BOUYTQ5B.120
&,GRCP=G/CP ! Used in DZTL, FTL calculations. BOUYTQ5B.121
&,LCRCP=LC/CP ! Latent heat of condensation / CP. BOUYTQ5B.122
&,LFRCP=LF/CP ! Latent heat of fusion / CP. BOUYTQ5B.123
&,LS=LC+LF ! Latent heat of sublimation. BOUYTQ5B.124
&,LSRCP=LS/CP ! Latent heat of sublimation / CP. BOUYTQ5B.125
&) BOUYTQ5B.126
BOUYTQ5B.127
IF (LTIMER) THEN BOUYTQ5B.128
CALL TIMER
('BOUY_TQ ',3) BOUYTQ5B.129
ENDIF BOUYTQ5B.130
!----------------------------------------------------------------------- BOUYTQ5B.131
!! 1. First loop round "boundary" levels. BOUYTQ5B.132
!----------------------------------------------------------------------- BOUYTQ5B.133
BOUYTQ5B.134
DO K=1,BL_LEVELS ARE1F404.110
BOUYTQ5B.136
!----------------------------------------------------------------------- BOUYTQ5B.137
!! 1.1 Calculate saturated specific humidity at pressure and ice/liquid BOUYTQ5B.138
!! temperature of current level (TL). BOUYTQ5B.139
!! Store pressure temporarily in BQ(*,K). BOUYTQ5B.140
!----------------------------------------------------------------------- BOUYTQ5B.141
BOUYTQ5B.142
IF (L_BL_LSPICE) THEN ADM3F404.368
CALL QSAT_WAT
(QSL(P1,K),TL(P1,K),P(P1,K),P_POINTS) ADM3F404.369
ELSE ADM3F404.370
CALL QSAT
(QSL(P1,K),TL(P1,K),P(P1,K),P_POINTS) ADM3F404.371
ENDIF ADM3F404.372
ENDDO ! bl_levels BOUYTQ5B.144
BOUYTQ5B.145
!----------------------------------------------------------------------- BOUYTQ5B.146
!! 1.2 Calculate buoyancy parameters BT and BQ, required for the BOUYTQ5B.147
!! calculation of Richardson numbers above the surface. BOUYTQ5B.148
!----------------------------------------------------------------------- BOUYTQ5B.149
BOUYTQ5B.150
DO K=1,BL_LEVELS ARE1F404.111
DO I=P1,P1+P_POINTS-1 BOUYTQ5B.152
BOUYTQ5B.153
BOUYTQ5B.154
BETAT = 1.0/T(I,K) ! P243.19 (1st eqn) BOUYTQ5B.155
BETAQ = C_VIRTUAL/(1.0+C_VIRTUAL*Q(I,K)-QCL(I,K)-QCF(I,K)) BOUYTQ5B.156
! ... P243.19 (2nd eqn) BOUYTQ5B.157
BOUYTQ5B.158
IF (TL(I,K).GT.TM.OR.L_BL_LSPICE) THEN ADM3F404.373
ALPHAL=(EPSILON * LC * QSL(I,K))/(R * TL(I,K) * TL(I,K) ) BOUYTQ5B.160
! ... P243.20 (Clausius-Clapeyron) for TL above freezing BOUYTQ5B.161
BOUYTQ5B.162
AL = 1.0 / (1.0 + LCRCP*ALPHAL) BOUYTQ5B.163
! ... P243.21 for TL above freezing BOUYTQ5B.164
BOUYTQ5B.165
BETAC = CF(I,K) * AL * ( LCRCP*BETAT - ETAR*BETAQ ) BOUYTQ5B.166
! ... P243.19 (3rd eqn) for TL above freezing BOUYTQ5B.167
BOUYTQ5B.168
ELSE BOUYTQ5B.169
ALPHAL = (EPSILON * LS * QSL(I,K))/(R*TL(I,K) * TL(I,K)) BOUYTQ5B.170
! ... P243.20 (Clausius-Clapeyron) for TL below freezing BOUYTQ5B.171
BOUYTQ5B.172
AL = 1.0 / (1.0 + LSRCP*ALPHAL) BOUYTQ5B.173
! ... P243.21 for TL below freezing BOUYTQ5B.174
BOUYTQ5B.175
BETAC = CF(I,K) * AL * ( LSRCP*BETAT - ETAR*BETAQ ) BOUYTQ5B.176
! ... P243.19 (3rd eqn) for TL below freezing BOUYTQ5B.177
BOUYTQ5B.178
ENDIF BOUYTQ5B.179
BT(I,K) = BETAT - ALPHAL*BETAC ! P243.18 (1st eqn) BOUYTQ5B.180
BQ(I,K) = BETAQ + BETAC ! P243.18 (2nd eqn) BOUYTQ5B.181
BF(I,K) = BETAQ*EPSILON*ETAR ADM3F404.374
ENDDO !p_points BOUYTQ5B.182
ENDDO ! bl_levels BOUYTQ5B.183
BOUYTQ5B.184
IF (LTIMER) THEN BOUYTQ5B.185
CALL TIMER
('BOUY_TQ ',4) BOUYTQ5B.186
ENDIF BOUYTQ5B.187
RETURN BOUYTQ5B.188
END BOUYTQ5B.189
*ENDIF BOUYTQ5B.190