SURFEX v8.1
General documentation of Surfex
surface_air_meb.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !####################################################################
6  SUBROUTINE surface_air_meb(PZ0, PZ0H, PZ0G, PH_VEG, PLAI, &
7  PTG, PTC, PTV, PVELC, PLW, &
8  PDISPH, &
9  PRAGNC, PGVNC, &
10  PUSTAR2, PCD, PCH, PRI )
11 !
12 ! typical values for nordic forest:
13 ! PZ0 = 0.8 m
14 ! PZ0G = 0.007m
15 ! PH_VEG = 15 m
16 ! PLAI = 5.
17 ! PCHIL = 0.12
18 ! PLW = 0.02 m
19 !
20 !
21 !!**** *SURFACE_AIR_MEB*
22 !!
23 !! PURPOSE
24 !! -------
25 !
26 ! Calculates the aerodynamic resistance (PRAGNC) between the soil and eventually
27 ! understory vegetation and canopy air, based on Choudhury and Monteith (1998)
28 ! and Monteith (1975).
29 ! Modification for free convection based on Sellers et.al (1986), leaf drag
30 ! coefficient according to Sellers et.al. (1996).
31 ! Also calculates the aerodynamic conductance (PGVNC) between the canopy itself
32 ! and canopy air, also based on Choudhury and Monteith (1998), and modified for
33 ! free conveection by Sellers et.al. (1986)
34 ! Only used for double energy balance
35 !
36 !
37 !!** METHOD
38 !! ------
39 !!
40 !! REFERENCE
41 !! ---------
42 !!
43 !!
44 !! AUTHOR
45 !! ------
46 !!
47 !! P. Samuelsson/S.Gollvik * SMHI *
48 !!
49 !! MODIFICATIONS
50 !! -------------
51 !! Original 11/2010
52 !! (A. Boone) 25/06/2014 Use stability fn from ISBA for stable conditions
53 !! (since none existed before). Added to handle extremely
54 !! stable conditions, such as encountered over a snowpack
55 !! (S. Garrigues & A. Boone)
56 !! 14/06/2017 Put in numerical limits for ground to canopy air
57 !! resistances. Needed in the limit as the vegetation
58 !! cover becomes vanishingly thin.
59 !!
60 !-------------------------------------------------------------------------------
61 !
62 !* 0. DECLARATIONS
63 ! ------------
64 !
65 USE modd_csts, ONLY : xg, xkarman
66 USE modd_surf_atm, ONLY : xrimax
67 !
68 USE yomhook ,ONLY : lhook, dr_hook
69 USE parkind1 ,ONLY : jprb
70 !
71 IMPLICIT NONE
72 !
73 !* 0.1 declarations of arguments
74 !
75 REAL, DIMENSION(:), INTENT(IN) :: PZ0, PZ0H, PZ0G, PH_VEG, PLAI
76 ! PZ0 = roughness length for momentum
77 ! PZ0H = roughness length for heat
78 ! PZ0G = roughness length for soil(understory veg?)/snow
79 ! PH_VEG = height of the vegetation
80 ! PLAI = leaf area index
81 !
82 REAL, DIMENSION(:), INTENT(IN) :: PTG, PTC, PTV, PVELC
83 ! PTG = surface temperature
84 ! PTC = canopy air temperature
85 ! PTV = canopy temperature
86 ! PVELC = wind speed at top of vegetation
87 !
88 REAL, DIMENSION(:), INTENT(IN) :: PLW, PDISPH
89 ! PLW = leaf width
90 ! PDISPH = displacement height
91 !
92 REAL, DIMENSION(:), INTENT(OUT) :: PRAGNC, PGVNC
93 ! PRAGNC = aerodynamic resistance between
94 ! soil/snow and canopy air
95 ! PGVNC = aerodynamic conductance between
96 ! the canopy and canopy air
97 !
98 REAL, DIMENSION(:), INTENT(OUT) :: PUSTAR2, PCD, PCH, PRI
99 ! PUSTAR2 = canopy top friction velocity squared (m2/s2)
100 ! PCD = drag coefficient (-)
101 ! PCH = heat transfor coefficient (ground to canopy air) (-)
102 ! PRI = Richardson number (ground to canopy air) (-)
103 !
104 !
105 !* 0.2 declarations of local variables
106 !
107 !
108 REAL, DIMENSION(SIZE(PTG)) :: ZDIFFH, ZK, ZPIH, ZDIFFT, ZRIF, ZZ0HG, ZUSTAR
109 !
110 REAL(KIND=JPRB) :: ZHOOK_HANDLE
111 !
112 !* 0.3 declarations of local parameters
113 !
114 REAL, PARAMETER :: ZNY = 0.15e-04 !kinematic viscosity for air
115 REAL, PARAMETER :: ZALPHA = 4. !attenuation coef. for mom.
116  ! ~2 for Wheat, ~4 for coniferous forest
117  ! NOTE Eventually should possibly be made a fn of veg type
118 REAL, PARAMETER :: ZALPHAPRIM = 3. !attenuation coef. for wind
119 REAL, PARAMETER :: ZA = 0.01
120 REAL, PARAMETER :: ZRAFA = 9. !resistance factor for stability correction
121  !for unstable conditions
122 
123 REAL, PARAMETER :: ZRAGNC_MIN = 1. ! (s/m) Minimum ground to canopy air resistance
124 !-------------------------------------------------------------------------------
125 !-------------------------------------------------------------------------------
126 !
127 !* 0. Initialization:
128 ! ---------------
129 !
130 IF (lhook) CALL dr_hook('SURFACE_AIR_MEB',0,zhook_handle)
131 !
132 pragnc(:) = 0.
133 pgvnc(:) = 0.
134 !
135 zdiffh(:) = max(ph_veg(:)-pdisph(:),0.1)
136 !
137 zk(:) = (xkarman*xkarman)*pvelc(:)*zdiffh(:)/log(zdiffh(:)/pz0(:))
138 !
139 ! Just a diagnostic: Ustar and the equivalent drag coef at the top of the canopy (m/s):
140 !
141 zustar(:) = zk(:)/(xkarman*zdiffh(:))
142 pcd(:) = zustar(:)/max(1.,pvelc(:))
143 pustar2(:) = zustar(:)**2
144 !
145 ! Aerodynamic resistance, Eq. 25 Choudhury and Monteith, 1988:
146 !
147 pragnc(:)=ph_veg(:)*exp(zalpha)/(zalpha*zk(:))*(exp(-zalpha*pz0g(:)/ph_veg(:)) &
148  -exp(-zalpha*(pdisph(:)+pz0(:))/ph_veg(:)))
149 !
150 ! For the case of vanishingly thin vegetation, limit is imposed
151 ! This results because the above Eq assumes z0v > z0g
152 !
153 pragnc(:) = max(zragnc_min,pragnc(:))
154 !
155 ! Modify the aerodynamic resistance, with an unstable transfer correction
156 ! Eq. A15, Sellers et.al. 1986 (RI < 0)
157 !
158 ! For stable conditions (RI > 0), use a form which asymptotically approaches 0
159 ! as Ri==>infinty. This is a fairly generic form typical of such curves...
160 ! As we have no predefined stable correction, we use ISBAs
161 ! (see Noilhan and Mahfouf, 1996). This stable correction
162 ! is most critical for snow...BOTH sublimation from ground-based snowpack and
163 ! melt conditions which can be characterized by very
164 ! strong stable conditions, thus a limited, constant value of the turbulent
165 ! exchange can permit very large negative heat fluxes (towards the snow)
166 ! and excessive melt rates ...also excessive sublimation can occur in winter.
167 ! Since the ISBA stability fn has a roughness length factor, we use
168 ! a simple Ri-based weight factor to ensure a continuous transition
169 ! between stability regimes. In the limit as Ri==>Ricrit, the
170 ! transfer function collapses into the ISBA relationship with the full roughness factor.
171 ! Finally, note that we assume the ratio z0/z0h is the same for vegetation and
172 ! underlying surface (as done for composite ISBA).
173 !
174 pri(:) = -xg*ph_veg(:)*(ptg(:)-ptc(:))/(ptg(:)*pvelc(:)*pvelc(:))
175 !
176 zrif(:) = 0.
177 zz0hg(:) = pz0g(:)
178 !
179 WHERE(pri(:) <= 0.) ! Unstable - Sellers
180  zpih(:) = sqrt(1. - zrafa*pri(:))
181 ELSEWHERE ! Stable - Noilhan and Mahfouf
182  zz0hg(:)= pz0g(:)*pz0h(:)/pz0(:)
183  zrif(:) = min(1., pri(:)/xrimax)
184  zpih(:) = (1/(1. + 15*pri(:)*sqrt(1.+5*pri(:))))* &
185  ((1.-zrif(:)) + zrif(:)*(log(zdiffh(:)/pz0g(:))/log(zdiffh(:)/zz0hg(:))) ) ! continuous
186 END WHERE
187 !
188 pragnc(:) = pragnc(:)/zpih(:)
189 !
190 ! Diagnose CH (transfer coefficient: -) just for diagnostic purposes:
191 !
192 pch(:) = 1/(pragnc(:)*max(1., pvelc(:)))
193 !
194 ! Aerodynamic resistance within the canopy layer, i.e. between canopy and canopy air
195 ! Eq. 29 and 30, Choudhury and Monteith, 1988:
196 !
197 pgvnc(:) = (2.*za)*plai(:)/zalphaprim*sqrt(pvelc(:)/plw(:))*(1.-exp(-0.5*zalphaprim))
198 !
199 ! Limit the aerodynamic conductance to a small value
200 !
201 pgvnc(:) = max(1.e-06,pgvnc(:))
202 !
203 ! Free convection correction Eq. A9 Sellers et.al., 1986:
204 !
205 zdifft(:) = max(1.e-06,ptv(:)-ptc(:))
206 zdifft(:) = sqrt(sqrt(zdifft(:)/plw(:)))
207 pgvnc(:) = pgvnc(:)+zdifft(:)*plai(:)/890.
208 !
209 IF (lhook) CALL dr_hook('SURFACE_AIR_MEB',1,zhook_handle)
210 !
211 END SUBROUTINE surface_air_meb
subroutine surface_air_meb(PZ0, PZ0H, PZ0G, PH_VEG, PLAI, PTG, PTC, PTV, PVELC, PLW, PDISPH, PRAGNC, PGVNC, PUSTAR2, PCD, PCH, PRI)
real, save xkarman
Definition: modd_csts.F90:48
real, save xg
Definition: modd_csts.F90:55
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15