1 MODULE module_sf_fogdes
3 USE module_model_constants
5 !-------------------------------------------------------------------
7 !-------------------------------------------------------------------
8 REAL, PARAMETER :: myu = 1.8e-5 ! air viscosity (m^2/s)
9 REAL, PARAMETER :: gno=1.0 !original value seems too aggressive: 4.64158883361278196
10 REAL, PARAMETER :: gpw=5./3., qcgmin=1.e-8
14 SUBROUTINE sf_fogdes(&
15 vdfg,fgdp,dfgdp,ivgtyp,lai,wspd,qc_curr, &
16 dtbl,rho,dz8w,grav_settling,nlcat, &
17 ids,ide, jds,jde, kds,kde, &
18 ims,ime, jms,jme, kms,kme, &
19 its,ite, jts,jte, kts,kte &
22 ! This module calculates the cloud water (fog) deposition onto the
23 ! surface due to turbulent exchange and gravitational settling using
24 ! simple Fog Deposition EStimation (FogDES) scheme.
28 ! Katata, G., Nagai, H., Wrzesinsky, T., Klemm, O., Eugster, W.,
29 ! Burkard, R. (2008), Development of a land surface model
30 ! including cloud water deposition on vegetation, Journal of
31 ! Applied Meteorology and Climatology, 47, 2129-2146.
32 ! Katata, G., Kajino, M., Hiraki, T., Aikawa, M., Kobayashi, T.,
33 ! Nagai, H. (2011), A method for simple and accurate estimation
34 ! of fog deposition in a mountain forest using a meteorological
35 ! model. Journal of Geophysical Research 116, D20102.
37 !-------------------------------------------------------------------
39 !======================================================================
42 !-- vdfg deposition velocity of fog (m/s)
43 !-- fgdp accumulated fog deposition (mm)
44 !-- dfgdp fog deposition rate in one timestep (mm)
45 !-- ivgtyp dominant vegetation category
46 !-- lai leaf area index
47 !-- wspd wind speed (m/s)
48 !-- qc_curr cloud water mixing ratio (kg/kg)
49 !-- dqc cloud water mixing ratio tendency (not used -
50 ! claculated in MYNN PBL scheme)
52 !-- rho density of the air (kg/m^3)
53 !-- dp_fog mean fog droplet diameter (m)
54 !-- dz8w dz between full levels (m)
55 !-- ch drag coefficient for heat in mynn (m/s)
56 !-- grav_settling flag for fog deposition at the lowest atmos layer
58 ! = 1 use Duynkerke (1991) - same as in atmos (above k = 1)
59 ! = 0 No gravitational settling
60 !-- lad leaf area density (m^2/m^3)
61 !-- spcfct factor of vegetation species for vdfg calculation
62 !-- vegh canopy height for vegetative surface (m)
63 !-- lwc cloud liquid water content (kg/m^3)
64 !-- ims start index for i in memory
65 !-- ime end index for i in memory
66 !-- jms start index for j in memory
67 !-- jme end index for j in memory
68 !-- kms start index for k in memory
69 !-- kme end index for k in memory
70 !-- its start index for i in tile
71 !-- ite end index for i in tile
72 !-- jts start index for j in tile
73 !-- jte end index for j in tile
74 !-- kts start index for k in tile
75 !-- kte end index for k in tile
76 !******************************************************************
77 !------------------------------------------------------------------
79 INTEGER, INTENT(IN) :: ims,ime,jms,jme,kms,kme &
80 ,its,ite,jts,jte,kts,kte &
81 ,ids,ide,jds,jde,kds,kde
83 INTEGER, INTENT(IN) :: grav_settling,nlcat
85 INTEGER,DIMENSION( ims:ime , jms:jme ),INTENT(INOUT) :: ivgtyp
87 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
88 INTENT(IN),OPTIONAL :: qc_curr
89 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
91 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
94 REAL, DIMENSION( ims:ime, jms:jme ),INTENT(INOUT),OPTIONAL :: vdfg
95 REAL, DIMENSION( ims:ime, jms:jme ),INTENT(INOUT),OPTIONAL :: fgdp
96 REAL, DIMENSION( ims:ime, jms:jme ),INTENT(INOUT),OPTIONAL :: dfgdp
97 REAL, DIMENSION( ims:ime, jms:jme ),INTENT(INOUT),OPTIONAL :: lai
98 REAL, DIMENSION( ims:ime, jms:jme ),INTENT(INOUT) :: wspd
100 REAL, INTENT(INOUT),OPTIONAL :: dtbl
102 !JOE-added for Dyunkerke(1991) & Dyunkerke and Driedonks (1988)
103 ! (grav_settling = 1).
104 REAL,parameter :: gpw2=0.66666666666667
109 REAL :: lad, spcfct, vegh, ftmp1, ftmp2, dp_fog, lwc
110 CHARACTER (LEN=25) :: land_use_type, lu_fogdes
112 !------------------------------------------------------------------
114 IF ((nlcat .eq. 20).or.(nlcat .eq. 21)) THEN ! includes lake category
115 land_use_type = 'MODIS'
116 ELSEIF ((nlcat .eq. 24).or.(nlcat .eq. 28)) THEN ! includes lake category
117 land_use_type = 'USGS'
119 PRINT *, 'Unknown landuse category (sf_fogdes.F): num_land_cat=',nlcat
125 lwc = rho(i,kts,j)*qc_curr(i,kts,j)
126 ! *-- FogDES scheme --
127 IF ( grav_settling .eq. 2 ) THEN
128 ! *-- USGS categories --
129 IF (land_use_type .eq. 'USGS') THEN
130 IF( (ivgtyp(i,j) .ge. 2 .and. ivgtyp(i,j) .le. 15) &
131 .or. (ivgtyp(i,j) .ge. 17 .and. ivgtyp(i,j) .le. 18) &
132 .or. (ivgtyp(i,j) .ge. 20 .and. ivgtyp(i,j) .le. 22) ) THEN
133 IF ((ivgtyp(i,j).ge. 2 .and. ivgtyp(i,j).le. 5) &
134 .or. (ivgtyp(i,j).eq. 7) &
135 .or. (ivgtyp(i,j).eq. 17) &
136 .or. (ivgtyp(i,j).eq. 20) ) THEN
137 lu_fogdes= 'CROP_GRASS'
138 ELSEIF((ivgtyp(i,j).eq. 6) .or. (ivgtyp(i,j).eq. 9) ) THEN
139 lu_fogdes= 'MIXED_CROP_GRASS_WOOD'
140 ELSEIF( ivgtyp(i,j).eq. 8 ) THEN
142 ELSEIF((ivgtyp(i,j).eq.11) .or. (ivgtyp(i,j).eq.13) ) THEN
143 lu_fogdes= 'BROAD_FOREST'
144 ELSEIF((ivgtyp(i,j).eq.15) .or. (ivgtyp(i,j).eq.22) ) THEN
145 lu_fogdes= 'MIXED_FOREST'
147 lu_fogdes= 'CONIFER_FOREST_ETC'
153 ! *-- MODIS categories --
154 IF( (ivgtyp(i,j) .ge. 1 .and. ivgtyp(i,j) .le. 10) &
155 .or. (ivgtyp(i,j) .eq. 12) &
156 .or. (ivgtyp(i,j) .eq. 14) &
157 .or. (ivgtyp(i,j) .ge. 18 .and. ivgtyp(i,j) .le. 19) ) THEN
158 IF ((ivgtyp(i,j).eq.10) .or. (ivgtyp(i,j).eq.12) ) THEN
159 lu_fogdes= 'CROP_GRASS'
160 ELSEIF( ivgtyp(i,j).eq.14 ) THEN
161 lu_fogdes= 'MIXED_CROP_GRASS_WOOD'
162 ELSEIF((ivgtyp(i,j).eq. 6) .or. (ivgtyp(i,j).eq. 7) ) THEN
164 ELSEIF((ivgtyp(i,j).eq. 2) .or. (ivgtyp(i,j).eq. 4) ) THEN
165 lu_fogdes= 'BROAD_FOREST'
166 ELSEIF((ivgtyp(i,j).eq. 5) .or. (ivgtyp(i,j).eq.19) ) THEN
167 lu_fogdes= 'MIXED_FOREST'
169 lu_fogdes= 'CONIFER_FOREST_ETC'
176 ! PRINT *,grav_settling,'luse:',land_use_type,lu_fogdes
178 ! Deposition velocity is computed using the vegetation parameters of LAI
179 ! and canopy height. Only gravitational settling is considered for non-
180 ! vegetated landuse categories.
182 IF ( lu_fogdes .eq. 'OTHERS' ) THEN
183 dp_fog= (17.03*lwc*1.e3 + 9.72)*1.e-6 ! Katata et al. (2008) JAMC
184 vdfg(i,j)= (rhowater-rho(i,kts,j))*dp_fog**2.0*g/(18.0*myu)
186 lu_select: SELECT CASE(lu_fogdes)
189 vegh = 3.0 !// scaled from 3m tree calc.
190 CASE ('MIXED_CROP_GRASS_WOOD')
191 spcfct= ( 1.0 + 0.2170 )/2.0
192 vegh = (20.0 + 3.0 )/2.0
196 CASE ('BROAD_FOREST')
199 CASE ('MIXED_FOREST')
200 spcfct= ( 1.0 + 0.8255 )/2.0
202 CASE ('CONIFER_FOREST_ETC')
207 ! simple linear functions for deposition velocity (vdfg)
208 ! for large leaf area density LAD (ftmp1) and small LAD (ftmp2).
211 ftmp1= 0.0164*lad**(-0.5000 ) !// LAD>0.1-0.2
212 ftmp2= 0.0095*lai(i,j)**3.0 - 0.05*lai(i,j)**2.0 &
213 + 0.0916*lai(i,j) + 0.0082 !// LAI<2 (LAD<0.08)
214 vdfg(i,j)= spcfct*MIN( ftmp1, ftmp2 )*wspd(i,j)
217 ! PRINT *,'vdfg:',spcfct,vegh,dp_fog,vdfg(i,j)
219 ELSE IF (grav_settling .eq. 0 ) THEN
222 ELSE IF (grav_settling .eq. 1 ) THEN
223 !JOE-use the same gravitation settling as in the free atmosphere
224 !(taken from the MYNN PBL, Duynkerke (1991))
225 IF ((qc_curr(i,kts,j)/(1.+qc_curr(i,kts,j))) > qcgmin) THEN
226 vdfg(i,j)=gno*(qc_curr(i,kts,j)/(1.+qc_curr(i,kts,j)))**gpw2
232 ! vdfg can advect moisture through the lowest half-sigma layer depth
234 vdfg(i,j)=MIN( 0.5*dz8w(i,kts,j)/dtbl, vdfg(i,j) )
236 IF ( PRESENT( fgdp ) ) THEN
237 dfgdp(i,j)= vdfg(i,j)*lwc*dtbl
238 fgdp(i,j) = fgdp(i,j)+dfgdp(i,j)
240 CALL wrf_error_fatal('Missing arguments for FGDP in sf_fogdes')
243 dfgdp(i,j)= MAX (dfgdp(i,j), 0.0)
244 fgdp(i,j) = MAX (fgdp(i,j), 0.0)
249 END SUBROUTINE sf_fogdes
251 ! ==================================================================
253 END MODULE module_sf_fogdes