*IF DEF,A03_3A,OR,DEF,A03_5A AJS1F401.1479
C ******************************COPYRIGHT****************************** GTS2F400.2755
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.2756
C GTS2F400.2757
C Use, duplication or disclosure of this code is subject to the GTS2F400.2758
C restrictions as set forth in the contract. GTS2F400.2759
C GTS2F400.2760
C Meteorological Office GTS2F400.2761
C London Road GTS2F400.2762
C BRACKNELL GTS2F400.2763
C Berkshire UK GTS2F400.2764
C RG12 2SZ GTS2F400.2765
C GTS2F400.2766
C If no contract has been raised with this copy of the code, the use, GTS2F400.2767
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.2768
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.2769
C Modelling at the above address. GTS2F400.2770
C ******************************COPYRIGHT****************************** GTS2F400.2771
C GTS2F400.2772
CLL SUBROUTINE FCDCH-------------------------------------------------- FCDCH3A.3
CLL FCDCH3A.4
CLL Purpose: Calculate bulk transfer coefficients at one or more FCDCH3A.5
CLL gridpoints, according to formulae derived by R N B Smith, FCDCH3A.6
CLL October 1989. FCDCH3A.7
CLL FCDCH3A.8
CLL Model Modification history: FCDCH3A.9
CLL version Date FCDCH3A.10
CLL FCDCH3A.11
CLL 3.4 18/10/94 *DECK inserted into UM version 3.4. S Jackson FCDCH3A.12
CLL FCDCH3A.13
CLL 4.0 30/12/94 Revised stability functions and calcs. for ARN1F400.130
CLL removing form drag effects from cH and cD(std); ARN1F400.131
CLL cD(std) used in definition of the Prandtl number. ARN1F400.132
CLL R.N.B.Smith ARN1F400.133
CLL 4.5 12/05/98 Optimize use of sqrt. RBarnes@ecmwf.int GRB0F405.5
CLL ARN1F400.134
CLL Programming standard: Unified Model Documentation Paper No 4, FCDCH3A.14
CLL Version 2, dated 18/1/90. FCDCH3A.15
CLL FCDCH3A.16
CLL System component covered: Part of P243. FCDCH3A.17
CLL FCDCH3A.18
CLL Documentation: UM Documentation Paper No 24, section P243. FCDCH3A.19
CLL See especially sub-section (iv). FCDCH3A.20
CLL FCDCH3A.21
C*L Arguments:--------------------------------------------------------- FCDCH3A.22
SUBROUTINE FCDCH( 9,6FCDCH3A.23
& RIB,Z0M,Z0H,Z0F,Z1,WIND_PROFILE_FACTOR,POINTS,CD,CH,CD_STD,LTIMER ARN1F400.135
&) ARN1F400.136
IMPLICIT NONE FCDCH3A.26
FCDCH3A.27
LOGICAL LTIMER FCDCH3A.28
FCDCH3A.29
INTEGER POINTS ! IN Number of gridpoints treated. FCDCH3A.30
FCDCH3A.31
REAL FCDCH3A.32
+ RIB(POINTS) ! IN Bulk Richardson number. FCDCH3A.33
+,Z0M(POINTS) ! IN Roughness length for momentum transport (m). FCDCH3A.34
+,Z0H(POINTS) ! IN Roughness length for heat and moisture (m). FCDCH3A.35
+,Z0F(POINTS) ! IN Roughness length for free-convective heat and FCDCH3A.36
+ ! moisture transport (m). FCDCH3A.37
+,Z1(POINTS) ! IN Height of centre of lowest model layer(m). FCDCH3A.38
&,WIND_PROFILE_FACTOR(POINTS) ARN1F400.137
C ! IN for adjusting the surface transfer ARN1F400.138
C ! coefficients to remove form drag effects. ARN1F400.139
FCDCH3A.39
REAL FCDCH3A.40
& CD(POINTS) ! OUT Surface drag coefficient including form drag. ARN1F400.140
+,CH(POINTS) ! OUT Bulk transfer coefficient for heat/moisture. FCDCH3A.42
&,CD_STD(POINTS)! OUT Surface drag coefficient excluding form drag. ARN1F400.141
FCDCH3A.43
C*L Workspace usage---------------------------------------------------- FCDCH3A.44
C No work areas are required. FCDCH3A.45
C FCDCH3A.46
C*---------------------------------------------------------------------- FCDCH3A.47
C*L No external subprograms are called. FCDCH3A.48
FCDCH3A.49
EXTERNAL TIMER FCDCH3A.50
FCDCH3A.51
C*---------------------------------------------------------------------- FCDCH3A.52
C Common and local physical constants. FCDCH3A.53
*CALL C_VKMAN
FCDCH3A.54
REAL ALPHAR,HETGEN,CZ,DM,THIRD FCDCH3A.55
PARAMETER ( FCDCH3A.56
& ALPHAR=5.0, ! Tunable parameter in FM and FH calculation. FCDCH3A.57
& HETGEN=0.0, ! Tunable parameter to represent 'the degree of FCDCH3A.58
C ! heterogeneity' of the surface; must be > or = 0.0 FCDCH3A.59
C ! and < or = 1.0 FCDCH3A.60
+ CZ=4.0, ! Tunable parameter in unstable Fh, Fm calculations, FCDCH3A.61
C ! equal to (3h)**-1.5 in the documentation. FCDCH3A.62
+ DM=2.0, ! Tunable parameter in unstable Fm calculation. FCDCH3A.63
+ THIRD=1./3. ! One third. FCDCH3A.64
+) FCDCH3A.65
C FCDCH3A.66
C Define local variables (more or less in order of first appearance). FCDCH3A.67
C FCDCH3A.68
INTEGER I ! Loop counter; horizontal field index. FCDCH3A.69
REAL FCDCH3A.70
+ KARMAN2 ! Square of von Karman's constant. FCDCH3A.71
+,ZETAM ! See documentation for definition. FCDCH3A.72
+,ZETAH ! See documentation for definition. FCDCH3A.73
&,CDN ! CD for neutral conditions. ARN1F400.142
&,CHN ! CH for neutral conditions. ARN1F400.143
&,CDN_STD ! CD_STD for neutral conditions. ARN1F400.144
&,PRANDTL ! Prandtl number at neutrality. ARN1F400.145
+,RFZ ! Temporary in calculation of FM and FH. FCDCH3A.76
&,RIF ! Flux Richardson number. ARN1F400.146
&,AM ! Temporary in calculation of FM and FH. FCDCH3A.81
&,AH ! Temporary in calculation of FM and FH. FCDCH3A.82
+,BM ! Temporary in calculation of FM and FH. FCDCH3A.83
+,BH ! Temporary in calculation of FM and FH. FCDCH3A.84
&,BM_STD ! Temporary in calculation of FM_STD. ARN1F400.147
&,FM ! Stability factor for CD. ARN1F400.148
&,FH ! Stability factor for CH. ARN1F400.149
&,FM_STD ! Stability factor for CD_STD. ARN1F400.150
&,temp_sqrt ! sqrt temporary value GRB0F405.6
FCDCH3A.87
IF (LTIMER) THEN FCDCH3A.88
CALL TIMER
('FCDCH ',3) FCDCH3A.89
ENDIF FCDCH3A.90
FCDCH3A.91
KARMAN2=VKMAN*VKMAN FCDCH3A.92
DO 1 I=1,POINTS FCDCH3A.93
C FCDCH3A.94
C----------------------------------------------------------------------- FCDCH3A.95
CL 1. Calculate neutral CD, CH. FCDCH3A.96
C----------------------------------------------------------------------- FCDCH3A.97
C FCDCH3A.98
C (A) Store ZETAM, ZETAH. FCDCH3A.99
C FCDCH3A.100
ZETAM = LOG( (Z1(I) + Z0M(I)) / Z0M(I) ) ARN1F400.151
ZETAH = LOG( (Z1(I) + Z0M(I)) / Z0H(I) ) ARN1F400.152
C FCDCH3A.103
C (B) Calculate neutral CD, CH. Eqns P243.40, P243.41. FCDCH3A.104
C FCDCH3A.105
CDN = KARMAN2 / ( ZETAM * ZETAM ) ARN1F400.153
CHN = KARMAN2 / ( ZETAH * ZETAM ) * WIND_PROFILE_FACTOR(I) ARN1F400.154
CDN_STD = CDN * WIND_PROFILE_FACTOR(I) * WIND_PROFILE_FACTOR(I) ARN1F400.155
ARN1F400.156
PRANDTL = CDN_STD / CHN ARN1F400.157
C FCDCH3A.108
C (C) Calculate temporary quantities. FCDCH3A.109
C FCDCH3A.110
AM = 2.0 * ALPHAR / PRANDTL ARN1F400.158
AH = AM FCDCH3A.114
C FCDCH3A.115
C----------------------------------------------------------------------- FCDCH3A.116
CL 2. Calculate functions Fm, Fh. FCDCH3A.117
C----------------------------------------------------------------------- FCDCH3A.118
RFZ=0.0 FCDCH3A.119
BM=0.0 FCDCH3A.120
BH=0.0 FCDCH3A.121
BM_STD=0.0 ARN1F400.159
ARN1F400.160
RIF = RIB(I) / PRANDTL ARN1F400.161
C FCDCH3A.124
C Case 1: stable boundary layer (RIB > 0). ARN1F400.162
C FCDCH3A.126
IF (RIB(I) .GT. 0.0) THEN FCDCH3A.127
IF ( 1.0/RIF .GT. HETGEN*ALPHAR ) THEN ARN1F400.163
FM = 1.0 - HETGEN * ALPHAR * RIF FCDCH3A.132
FM = ( FM * FM ) / FCDCH3A.133
& ( 1.0 + 2.0 * (1.0-HETGEN) * ALPHAR * RIF ) FCDCH3A.134
FH = FM FCDCH3A.135
FM_STD = FM ARN1F400.164
ELSE FCDCH3A.136
FM = 0.0 FCDCH3A.137
FH = 0.0 FCDCH3A.138
FM_STD = 0.0 ARN1F400.165
ENDIF FCDCH3A.139
ELSE FCDCH3A.140
C FCDCH3A.141
C Case 2: unstable boundary layer (RIB < or = 0). FCDCH3A.142
C FCDCH3A.143
C (A) Store 1/Fz in RFZ. Eqn P243.51, as approximated by P243.52. FCDCH3A.144
C FCDCH3A.145
RFZ = CZ * SQRT ( Z1(I) / Z0F(I) ) FCDCH3A.146
C FCDCH3A.147
C (B) Store BM, BH and BM_STD. ARN1F400.166
C FCDCH3A.149
BM = DM * AM * CDN * RFZ ARN1F400.167
BH = AH * CHN * RFZ ARN1F400.168
BM_STD = DM * AM * CDN_STD * RFZ ARN1F400.169
C FCDCH3A.152
C (C) Finally calculate FM, FH and FM_STD. ARN1F400.170
C FCDCH3A.154
temp_sqrt = SQRT(-RIB(I)) GRB0F405.7
FM = 1.0 - AM * RIB(I) / ( 1.0 + BM * temp_sqrt ) GRB0F405.8
FH = 1.0 - AH * RIB(I) / ( 1.0 + BH * temp_sqrt ) GRB0F405.9
FM_STD = 1.0 - AM * RIB(I) / ( 1.0 + BM_STD * temp_sqrt ) GRB0F405.10
ENDIF FCDCH3A.157
C FCDCH3A.158
C----------------------------------------------------------------------- FCDCH3A.159
CL 3. Calculate output coefficients. Eqns P243.53, P243.54. FCDCH3A.160
C----------------------------------------------------------------------- FCDCH3A.161
C FCDCH3A.162
CD(I) = CDN * FM ARN1F400.174
CH(I) = CHN * FH ARN1F400.175
CD_STD(I) = CDN_STD * FM_STD ARN1F400.176
FCDCH3A.165
1 CONTINUE FCDCH3A.166
FCDCH3A.167
IF (LTIMER) THEN FCDCH3A.168
CALL TIMER
('FCDCH ',4) FCDCH3A.169
ENDIF FCDCH3A.170
FCDCH3A.171
RETURN FCDCH3A.172
END FCDCH3A.173
*ENDIF FCDCH3A.174