1 MODULE module_dep_simple
3 ! many of these parameters will depend on the RADM mechanism!
4 ! if you change it, lets talk about it and get it done!!!
7 INTEGER, PARAMETER :: dep_seasons = 5 , nlu = 25, &
8 nseason = 1, nseasons = 2
10 ! following currently hardwired to USGS
12 INTEGER, PARAMETER :: isice_temp=24,iswater_temp=16
13 character, parameter :: mminlu='USGS'
15 INTEGER :: ixxxlu(nlu)
17 rac(nlu,dep_seasons), rclo(nlu,dep_seasons), rcls(nlu,dep_seasons), &
18 rgso(nlu,dep_seasons), rgss(nlu,dep_seasons), &
19 ri(nlu,dep_seasons), rlu(nlu,dep_seasons)
21 ! NO MORE THAN 1000 SPECIES FOR DEPOSITION
23 REAL, DIMENSION (1:1000) :: dratio,hstar,hstar4,f0,dhr,scpr23
24 ! .. Default Accessibility ..
26 logical, allocatable :: is_aerosol(:) ! true if field is aerosol (any phase)
29 subroutine wesely_driver(id,ktau,dtstep, &
31 gmt,julday,t_phy,moist,p8w,t8w, &
32 p_phy,chem,rho_phy,dz8w,ddvel,aer_res, &
33 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
35 ids,ide, jds,jde, kds,kde, &
36 ims,ime, jms,jme, kms,kme, &
37 its,ite, jts,jte, kts,kte )
38 !----------------------------------------------------------------------
39 USE module_model_constants
41 USE module_state_description
42 USE module_data_sorgam
43 ! USE module_data_radm2
44 ! USE module_data_racm
46 INTEGER, INTENT(IN ) :: id,julday, &
48 ids,ide, jds,jde, kds,kde, &
49 ims,ime, jms,jme, kms,kme, &
50 its,ite, jts,jte, kts,kte
51 INTEGER, INTENT(IN ) :: &
53 REAL, INTENT(IN ) :: &
56 ! advected moisture variables
58 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), &
61 ! advected chemical species
63 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), &
64 INTENT(INOUT ) :: chem
66 ! deposition velocities
68 REAL, DIMENSION( its:ite, jts:jte, num_chem ), &
69 INTENT(INOUT ) :: ddvel
71 ! input from met model
74 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
82 INTEGER,DIMENSION( ims:ime , jms:jme ) , &
85 REAL, DIMENSION( ims:ime , jms:jme ) , &
97 !--- deposition and emissions stuff
100 REAL :: clwchem,dvfog,dvpart,rad,rhchem,ta,ustar,vegfrac,z1,zntt
101 INTEGER :: iland, iprt, iseason, jce, jcs, n, nr, ipr,jpr,nvr
102 LOGICAL :: highnh3, rainflag, vegflag, wetflag
105 REAL :: p(kts:kte-1), srfres(numgas),ddvel0d(numgas)
107 ! necessary for aerosols (module dependent)
109 real :: aer_res(its:ite,jts:jte),rcx(numgas)
111 TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags
115 ! .. Intrinsic Functions ..
118 CALL wrf_debug(15,'in dry_dep_wesely')
120 if(julday.lt.90.or.julday.gt.270)then
122 CALL wrf_debug(15,'setting iseason to 2')
130 vegfrac = vegfra(i,j)
131 pa = .01*p_phy(i,kts,j)
132 clwchem = moist(i,kts,j,p_qc)
136 z1 = z_at_w(i,kts+1,j)-z_at_w(i,kts,j)
138 ! Set logical default values
143 if(moist(i,kts,j,p_qr).gt.0.)rainflag = .true.
145 rhchem = MIN( 100.,100. * moist(i,kts,j,p_qv) / &
146 (3.80*exp(17.27*(t_phy(i,kts,j)-273.)/(t_phy(i,kts,j)-36.))/pa))
147 rhchem = MAX(5.,RHCHEM)
148 if (rhchem >= 95.) wetflag = .true.
150 if(chem(i,kts,j,p_nh3).gt.2.*chem(i,kts,j,p_so2))highnh3 = .true.
154 ! if(snowc(i,j).gt.0.)iseason=4
155 CALL rc(rcx,ta,rad,rhchem,iland,iseason,numgas, &
156 wetflag,rainflag,highnh3,iprt,p_o3,p_so2,p_nh3)
161 CALL deppart(rmol(i,j),ustar,rhchem,clwchem,iland,dvpart,dvfog)
164 CALL landusevg(ddvel0d,ustar,rmol(i,j),zntt,z1,dvpart,iland, &
165 numgas,srfres,aer_res(i,j),p_sulf)
167 !wig: CMBZ doe snot have Ho and HO2 last so need to copy all species
168 ! ddvel(i,j,1:numgas-2)=ddvel0d(1:numgas-2)
169 ddvel(i,j,1:numgas)=ddvel0d(1:numgas)
173 ! For the additional CBMZ species, assign similar RADM counter parts for
174 ! now. Short lived species get a zero velocity since dry dep should be
175 ! unimportant. **ALSO**, treat p_sulf as h2so4 vapor, not aerosol sulfate
177 if ( (config_flags%chem_opt == CBMZ ) .or. &
178 (config_flags%chem_opt == CBMZ_BB ) .or. &
179 (config_flags%chem_opt == CBMZ_MOSAIC_4BIN_AQ) .or. &
180 (config_flags%chem_opt == CBMZ_MOSAIC_8BIN_AQ) .or. &
181 (config_flags%chem_opt == CBMZ_MOSAIC_4BIN) .or. &
182 (config_flags%chem_opt == CBMZ_MOSAIC_8BIN) ) then
185 ddvel(i,j,p_sulf) = ddvel(i,j,p_hno3)
186 ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3)
187 ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3)
188 ddvel(i,j,p_ch3o2) = 0
189 ddvel(i,j,p_ethp) = 0
190 ddvel(i,j,p_ch3oh) = ddvel(i,j,p_hcho)
191 ddvel(i,j,p_c2h5oh) = ddvel(i,j,p_hcho)
192 ddvel(i,j,p_par) = ddvel(i,j,p_hc5)
195 ddvel(i,j,p_open) = ddvel(i,j,p_xyl)
196 ddvel(i,j,p_op3) = ddvel(i,j,p_op2)
197 ddvel(i,j,p_c2o3) = 0
199 ddvel(i,j,p_ano2) = 0
202 ddvel(i,j,p_xpar) = 0
203 ddvel(i,j,p_isoprd) = 0
204 ddvel(i,j,p_isopp) = 0
205 ddvel(i,j,p_isopn) = 0
206 ddvel(i,j,p_isopo2) = 0
207 if( config_flags%chem_opt == CBMZ ) then
209 ddvel(i,j,p_msa) = ddvel(i,j,p_hno3)
210 ddvel(i,j,p_dmso) = 0
211 ddvel(i,j,p_dmso2) = 0
212 ddvel(i,j,p_ch3so2h) = 0
213 ddvel(i,j,p_ch3sch2oo) = 0
214 ddvel(i,j,p_ch3so2) = 0
215 ddvel(i,j,p_ch3so3) = 0
216 ddvel(i,j,p_ch3so2oo) = 0
217 ddvel(i,j,p_ch3so2ch2oo) = 0
224 END SUBROUTINE wesely_driver
226 ! **********************************************************************
227 ! ************************** SUBROUTINE RC ***************************
228 ! **********************************************************************
229 SUBROUTINE rc(rcx,t,rad,rh,iland,iseason,numgas, &
230 wetflag,rainflag,highnh3,iprt,p_o3,p_so2,p_nh3)
231 ! THIS SUBROUTINE CALCULATES SURFACE RESISTENCES ACCORDING
234 ! ATMOSPHERIC ENVIRONMENT 23 (1989), 1293-1304
235 ! WITH SOME ADDITIONS ACCORDING TO
236 ! J. W. ERISMAN, A. VAN PUL, AND P. WYERS,
237 ! ATMOSPHERIC ENVIRONMENT 28 (1994), 2595-2607
238 ! WRITTEN BY WINFRIED SEIDL, APRIL 1997
239 ! MODYFIED BY WINFRIED SEIDL, MARCH 2000
241 !----------------------------------------------------------------------
242 ! .. Scalar Arguments ..
244 INTEGER :: iland, iseason, numgas
245 LOGICAL :: highnh3, rainflag, wetflag
248 INTEGER :: iprt,p_o3,p_so2,p_nh3
250 ! .. Local Scalars ..
251 REAL :: rclx, rdc, resice, rgsx, rluo1, rluo2, rlux, rmx, rs, rsmx, &
256 REAL :: hstary(numgas)
258 ! .. Intrinsic Functions ..
270 !!! HARDWIRE VALUES FOR TESTING
278 IF ((tc<=0.) .OR. (tc>=40.)) THEN
281 rs = ri(iland,iseason)*(1+z*z)*(400./(tc*(40.-tc)))
283 rdc = 100*(1.+1000./(rad+10))/(1+1000.*rdtheta)
284 rluo1 = 1./(1./3000.+1./3./rlu(iland,iseason))
285 rluo2 = 1./(1./1000.+1./3./rlu(iland,iseason))
286 resice = 1000.*exp(-tc-4.)
289 IF (hstar(n)==0.) GO TO 10
290 hstary(n) = hstar(n)*exp(dhr(n)*(1./t-1./298.))
291 rmx = 1./(hstary(n)/3000.+100.*f0(n))
292 rsmx = rs*dratio(n) + rmx
293 rclx = 1./(hstary(n)/1.E+5/rcls(iland,iseason)+f0(n)/rclo(iland, &
295 rgsx = 1./(hstary(n)/1.E+5/rgss(iland,iseason)+f0(n)/rgso(iland, &
297 rlux = rlu(iland,iseason)/(1.E-5*hstary(n)+f0(n)) + resice
299 rlux = 1./(1./3./rlu(iland,iseason)+1.E-7*hstary(n)+f0(n)/rluo1)
302 rlux = 1./(1./3./rlu(iland,iseason)+1.E-7*hstary(n)+f0(n)/rluo2)
304 rcx(n) = 1./(1./rsmx+1./rlux+1./(rdc+rclx)+1./(rac(iland, &
306 IF (rcx(n)<1.) rcx(n) = 1.
309 ! SPECIAL TREATMENT FOR OZONE
310 hstary(p_o3) = hstar(p_o3)*exp(dhr(p_o3)*(1./t-1./298.))
311 rmx = 1./(hstary(p_o3)/3000.+100.*f0(p_o3))
312 rsmx = rs*dratio(p_o3) + rmx
313 rlux = rlu(iland,iseason)/(1.E-5*hstary(p_o3)+f0(p_o3)) + resice
314 rclx = rclo(iland,iseason) + resice
315 rgsx = rgso(iland,iseason) + resice
316 IF (wetflag) rlux = rluo1
317 IF (rainflag) rlux = rluo2
318 rcx(p_o3) = 1./(1./rsmx+1./rlux+1./(rdc+rclx)+1./(rac(iland, &
320 IF (rcx(p_o3)<1.) rcx(p_o3) = 1.
322 ! SPECIAL TREATMENT FOR SO2 (Wesely)
323 ! HSTARY(P_SO2)=HSTAR(P_SO2)*EXP(DHR(P_SO2)*(1./T-1./298.))
324 ! RMX=1./(HSTARY(P_SO2)/3000.+100.*F0(P_SO2))
325 ! RSMX=RS*DRATIO(P_SO2)+RMX
326 ! RLUX=RLU(ILAND,ISEASON)/(1.E-5*HSTARY(P_SO2)+F0(P_SO2))
328 ! RCLX=RCLS(ILAND,ISEASON)+RESICE
329 ! RGSX=RGSS(ILAND,ISEASON)+RESICE
330 ! IF ((wetflag).OR.(RAINFLAG)) THEN
331 ! IF (ILAND.EQ.1) THEN
337 ! RCX(P_SO2)=1./(1./RSMX+1./RLUX+1./(RDC+RCLX)
338 ! & +1./(RAC(ILAND,ISEASON)+RGSX))
339 ! IF (RCX(P_SO2).LT.1.) RCX(P_SO2)=1.
341 ! SO2 according to Erisman et al. 1994
343 rsmx = rs*dratio(p_so2)
347 rlux = 25000.*exp(-0.0693*rh)
349 rlux = 0.58E12*exp(-0.278*rh)
352 IF (((wetflag) .OR. (rainflag)) .AND. (tc>(-1.))) THEN
355 IF ((tc>=(-5.)) .AND. (tc<=(-1.))) THEN
361 ! INSTEAD OF R_INC R_CL and R_DC of Wesely are used
362 rclx = rcls(iland,iseason)
366 IF ((wetflag) .OR. (rainflag)) THEN
374 IF (iland==iswater_temp) THEN
378 IF ((iseason==4) .OR. (iland==isice_temp)) THEN
382 IF ((tc>=(-1.)) .AND. (tc<=2.)) THEN
389 ! TOTAL SURFACE RESISTENCE
390 IF ((iseason/=4) .AND. (ixxxlu(iland)/=1) .AND. (iland/=iswater_temp) .AND. &
391 (iland/=isice_temp)) THEN
392 rcx(p_so2) = 1./(1./rsmx+1./rlux+1./(rclx+rdc+rgsx))
396 IF (rcx(p_so2)<1.) rcx(p_so2) = 1.
397 ! NH3 according to Erisman et al. 1994
399 rsmx = rs*dratio(p_nh3)
400 ! GRASSLAND (PASTURE DURING GRAZING)
401 IF (ixxxlu(iland)==3) THEN
406 IF ((iseason==2) .OR. (iseason==3) .OR. (iseason==5)) THEN
414 IF ((wetflag) .OR. (rainflag)) THEN
418 IF ((tc>=(-5.)) .AND. (tc<=-1.)) THEN
426 ! AGRICULTURAL LAND (CROPS AND UNGRAZED PASTURE)
427 IF (ixxxlu(iland)==2) THEN
435 IF ((wetflag) .OR. (rainflag)) THEN
439 IF ((iseason==2) .OR. (iseason==3) .OR. (iseason==5)) THEN
447 IF ((wetflag) .OR. (rainflag)) THEN
451 IF ((tc>=(-5.)) .AND. (tc<=-1.)) THEN
459 ! SEMI-NATURAL ECOSYSTEMS AND FORESTS
460 IF ((ixxxlu(iland)==4) .OR. (ixxxlu(iland)==5) .OR. (ixxxlu( &
467 IF ((wetflag) .OR. (rainflag)) THEN
474 IF ((iseason==2) .OR. (iseason==3) .OR. (iseason==5)) THEN
476 IF ((tc>=(-5.)) .AND. (tc<=-1.)) THEN
485 IF (iland==iswater_temp) THEN
488 ! URBAN AND DESERT (SOIL SURFACES)
489 IF (ixxxlu(iland)==1) THEN
490 IF ( .NOT. wetflag) THEN
496 ! SNOW COVERED SURFACES OR PERMANENT ICE
497 IF ((iseason==4) .OR. (iland==isice_temp)) THEN
501 IF ((tc>=(-1.)) .AND. (tc<=2.)) THEN
502 rcx(p_nh3) = 70.*(2.-tc)
508 IF (rcx(p_nh3)<1.) rcx(p_nh3) = 1.
511 ! **********************************************************************
512 ! ************************ SUBROUTINE DEPPART **************************
513 ! **********************************************************************
514 SUBROUTINE deppart(rmol,ustar,rh,clw,iland,dvpart,dvfog)
515 ! THIS SUBROUTINE CALCULATES SURFACE DEPOSITION VELOCITIES
516 ! FOR FINE AEROSOL PARTICLES ACCORDING TO THE MODEL OF
517 ! J. W. ERISMAN, A. VAN PUL, AND P. WYERS,
518 ! ATMOSPHERIC ENVIRONMENT 28 (1994), 2595-2607
519 ! WRITTEN BY WINFRIED SEIDL, APRIL 1997
520 ! MODIFIED BY WINFRIED SEIDL, MARCH 2000
522 ! ----------------------------------------------------------------------
523 ! .. Scalar Arguments ..
524 REAL :: clw, dvfog, dvpart, rh, rmol, ustar
527 ! .. Intrinsic Functions ..
530 dvpart = ustar/kpart(iland)
532 ! INSTABLE LAYERING CORRECTION
533 dvpart = dvpart*(1.+(-300.*rmol)**0.66667)
536 ! HIGH RELATIVE HUMIDITY CORRECTION
537 ! ACCORDING TO J. W. ERISMAN ET AL.
538 ! ATMOSPHERIC ENVIRONMENT 31 (1997), 321-332
539 dvpart = dvpart*(1.+0.37*exp((rh-80.)/20.))
542 ! SEDIMENTATION VELOCITY OF FOG WATER ACCORDING TO
543 ! R. FORKEL, W. SEIDL, R. DLUGI AND E. DEIGELE
544 ! J. GEOPHYS. RES. 95D (1990), 18501-18515
546 IF (ixxxlu(iland)==5) THEN
547 ! TURBULENT DEPOSITION OF FOG WATER IN CONIFEROUS FOREST ACCORDI
548 ! A. T. VERMEULEN ET AL.
549 ! ATMOSPHERIC ENVIRONMENT 31 (1997), 375-386
550 dvfog = dvfog + 0.195*ustar*ustar
553 END SUBROUTINE deppart
554 SUBROUTINE landusevg(vgs,ustar,rmol,z0,zz,dvparx,iland,numgas, &
555 srfres,aer_res,p_sulf)
556 ! This subroutine calculates the species specific deposition velocit
557 ! as a function of the local meteorology and land use. The depositi
558 ! Velocity is also landuse specific.
559 ! Reference: Hsieh, C.M., Wesely, M.L. and Walcek, C.J. (1986)
560 ! A Dry Deposition Module for Regional Acid Deposition
561 ! EPA report under agreement DW89930060-01
562 ! Revised version by Darrell Winner (January 1991)
563 ! Environmental Engineering Science 138-78
564 ! California Institute of Technology
566 ! Modified by Winfried Seidl (August 1997)
567 ! Fraunhofer-Institut fuer Atmosphaerische Umweltforschung
568 ! Garmisch-Partenkirchen, D-82467
569 ! for use of Wesely and Erisman surface resistances
571 ! Ustar : The grid average friction velocity (m/s)
572 ! Rmol : Reciprocal of the Monin-Obukhov length (1/m)
573 ! Z0 : Surface roughness height for the grid square (m)
574 ! SrfRes : Array of landuse/atmospheric/species resistances (s/m)
575 ! Slist : Array of chemical species codes
576 ! Dvparx : Array of surface deposition velocity of fine aerosol p
578 ! Vgs : Array of species and landuse specific deposition
580 ! Vg : Cell-average deposition velocity by species (m/s)
582 ! SCPR23 : (Schmidt #/Prandtl #)**(2/3) Diffusion correction fac
583 ! Zr : Reference Height (m)
584 ! Iatmo : Parameter specifying the stabilty class (Function of
585 ! Z0 : Surface roughness height (m)
586 ! karman : Von Karman constant (from module_model_constants)
587 USE module_model_constants, only: karman
589 ! .. Scalar Arguments ..
590 REAL :: dvparx, rmol, ustar, z0, zz
591 real :: aer_res, polint
592 INTEGER :: iland, numgas, p_sulf
594 ! .. Array Arguments ..
595 REAL :: srfres(numgas), vgs(numgas)
597 ! .. Local Scalars ..
598 REAL :: vgp, vgpart, zr
602 REAL :: vgspec(numgas)
604 ! Set the reference height (10.0 m)
607 ! CALCULATE THE DEPOSITION VELOCITY without any surface
608 ! resistance term, i.e. 1 / (ra + rb)
609 CALL depvel(numgas,rmol,zr,z0,ustar,vgspec,vgpart,aer_res)
611 ! Calculate the deposition velocity for each species
612 ! and grid cell by looping through all the possibile combinations
615 vgp = 1.0/((1.0/vgpart)+(1.0/dvparx))
617 ! Loop through the various species
621 ! Add in the surface resistance term, rc (SrfRes)
623 vgs(jspec) = 1.0/(1.0/vgspec(jspec)+srfres(jspec))
627 CALL cellvg(vgs,ustar,zz,zr,rmol,numgas)
630 END SUBROUTINE landusevg
632 SUBROUTINE cellvg(vgtemp,ustar,dz,zr,rmol,nspec)
633 ! THIS PROGRAM HAS BEEN DESIGNED TO CALCULATE THE CELL AVERAGE
634 ! DEPOSITION VELOCITY GIVEN THE VALUE OF VG AT SOME REFERENCE
635 ! HEIGHT ZR WHICH IS MUCH SMALLER THAN THE CELL HEIGHT DZ.
636 ! PROGRAM WRITTEN BY GREGORY J.MCRAE (NOVEMBER 1977)
637 ! Modified by Darrell A. Winner (February 1991)
638 !.....PROGRAM VARIABLES...
639 ! VgTemp - DEPOSITION VELOCITY AT THE REFERENCE HEIGHT
640 ! USTAR - FRICTION VELOCITY
641 ! RMOL - RECIPROCAL OF THE MONIN-OBUKHOV LENGTH
642 ! ZR - REFERENCE HEIGHT
644 ! CELLVG - CELL AVERAGE DEPOSITION VELOCITY
645 ! VK - VON KARMAN CONSTANT
646 USE module_model_constants, only: karman
648 ! .. Scalar Arguments ..
649 REAL :: dz, rmol, ustar, zr
652 ! .. Array Arguments ..
653 REAL :: vgtemp(nspec)
655 ! .. Local Scalars ..
656 REAL :: a, fac, pdz, pzr, vk
659 ! .. Intrinsic Functions ..
662 ! Set the von Karman constant
665 ! DETERMINE THE STABILITY BASED ON THE CONDITIONS
673 pdz = sqrt(1.0-9.0*dz*rmol)
674 pzr = sqrt(1.0-9.0*zr*rmol)
675 fac = ((pdz-1.0)/(pzr-1.0))*((pzr+1.0)/(pdz+1.0))
676 a = 0.74*dz*alog(fac) + (0.164/rmol)*(pdz-pzr)
677 ELSE IF (rmol==0) THEN
678 a = 0.74*(dz*alog(dz/zr)-dz+zr)
680 a = 0.74*(dz*alog(dz/zr)-dz+zr) + (2.35*rmol)*(dz-zr)**2
683 ! CALCULATE THE DEPOSITION VELOCITIY
685 vgtemp(nss) = vgtemp(nss)/(1.0+vgtemp(nss)*a/(vk*ustar*(dz-zr)))
689 END SUBROUTINE cellvg
690 SUBROUTINE depvel(numgas,rmol,zr,z0,ustar,depv,vgpart,aer_res)
691 ! THIS FUNCTION HAS BEEN DESIGNED TO EVALUATE AN UPPER LIMIT
692 ! FOR THE POLLUTANT DEPOSITION VELOCITY AS A FUNCTION OF THE
693 ! SURFACE ROUGHNESS AND METEOROLOGICAL CONDITIONS.
694 ! PROGRAM WRITTEN BY GREGORY J.MCRAE (NOVEMBER 1977)
695 ! Modified by Darrell A. Winner (Feb. 1991)
696 ! by Winfried Seidl (Aug. 1997)
697 !.....PROGRAM VARIABLES...
698 ! RMOL - RECIPROCAL OF THE MONIN-OBUKHOV LENGTH
699 ! ZR - REFERENCE HEIGHT
700 ! Z0 - SURFACE ROUGHNESS HEIGHT
701 ! SCPR23 - (Schmidt #/Prandtl #)**(2/3) Diffusion correction fact
702 ! UBAR - ABSOLUTE VALUE OF SURFACE WIND SPEED
703 ! DEPVEL - POLLUTANT DEPOSITION VELOCITY
704 ! Vk - VON KARMAN CONSTANT
705 ! USTAR - FRICTION VELOCITY U*
706 ! POLINT - POLLUTANT INTEGRAL
707 ! AER_RES - AERODYNAMIC RESISTANCE
709 ! MCRAE, G.J. ET AL. (1983) MATHEMATICAL MODELING OF PHOTOCHEMICAL
710 ! AIR POLLUTION, ENVIRONMENTAL QUALITY LABORATORY REPORT 18,
711 ! CALIFORNIA INSTITUTE OF TECHNOLOGY, PASADENA, CALIFORNIA.
712 !.....RESTRICTIONS...
713 ! 1. THE MODEL EDDY DIFFUSIVITIES ARE BASED ON MONIN-OBUKHOV
714 ! SIMILARITY THEORY AND SO ARE ONLY APPLICABLE IN THE
715 ! SURFACE LAYER, A HEIGHT OF O(30M).
716 ! 2. ALL INPUT UNITS MUST BE CONSISTENT
717 ! 3. THE PHI FUNCTIONS USED TO CALCULATE THE FRICTION
718 ! VELOCITY U* AND THE POLLUTANT INTEGRALS ARE BASED
719 ! ON THE WORK OF BUSINGER ET AL.(1971).
720 ! 4. THE MOMENTUM AND POLLUTANT DIFFUSIVITIES ARE NOT
721 ! THE SAME FOR THE CASES L<0 AND L>0.
722 USE module_model_constants, only: karman
724 ! .. Scalar Arguments ..
725 REAL :: rmol, ustar, vgpart, z0, zr, aer_res
728 ! .. Array Arguments ..
731 ! .. Local Scalars ..
732 REAL :: ao, ar, polint, vk
735 ! .. Intrinsic Functions ..
738 ! Set the von Karman constant
741 ! Calculate the diffusion correction factor
742 ! SCPR23 is calculated as (Sc/Pr)**(2/3) using Sc= 1.15 and Pr= 1.0
745 ! DETERMINE THE STABILITY BASED ON THE CONDITIONS
750 if(abs(rmol) < 1.E-6 ) rmol = 0.
753 ar = ((1.0-9.0*zr*rmol)**(0.25)+0.001)**2
754 ao = ((1.0-9.0*z0*rmol)**(0.25)+0.001)**2
755 polint = 0.74*(alog((ar-1.0)/(ar+1.0))-alog((ao-1.0)/(ao+1.0)))
756 ELSE IF (rmol==0.) THEN
757 polint = 0.74*alog(zr/z0)
759 polint = 0.74*alog(zr/z0) + 4.7*rmol*(zr-z0)
762 ! CALCULATE THE Maximum DEPOSITION VELOCITY
765 depv(l) = ustar*vk/(2.0*scpr23(l)+polint)
767 vgpart = ustar*vk/polint
768 aer_res = polint/(karman*max(ustar,1.0e-4))
771 END SUBROUTINE depvel
773 SUBROUTINE dep_init(id,config_flags,numgas)
774 USE module_model_constants
776 USE module_state_description
777 TYPE (grid_config_rec_type) , INTENT (in) :: config_flags
779 ! .. Scalar Arguments ..
780 integer, intent(in) :: id, numgas
783 ! .. Local Scalars ..
785 INTEGER :: iland, iseason, l
789 REAL :: dat1(nlu,dep_seasons), dat2(nlu,dep_seasons), &
790 dat3(nlu,dep_seasons), dat4(nlu,dep_seasons), &
791 dat5(nlu,dep_seasons), dat6(nlu,dep_seasons), &
792 dat7(nlu,dep_seasons), dvj(numgas)
794 ! .. Make sure that the model is being run with a soil model. Otherwise,
795 ! iland will be zero in deppart, which will try to pull non-exisant
797 call nl_get_sf_surface_physics(id,l)
799 call wrf_error_fatal("ERROR: Cannot use dry deposition without using a soil model.")
802 ! .. Data Statements ..
803 ! RI for stomatal resistance
804 ! data ((ri(ILAND,ISEASON),ILAND=1,nlu),ISEASON=1,dep_seasons)/0.10E+11, &
805 DATA ((dat1(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, &
806 0.60E+02, 0.60E+02, 0.60E+02, 0.60E+02, 0.70E+02, 0.12E+03, &
807 0.12E+03, 0.12E+03, 0.12E+03, 0.70E+02, 0.13E+03, 0.70E+02, &
808 0.13E+03, 0.10E+03, 0.10E+11, 0.80E+02, 0.10E+03, 0.10E+11, &
809 0.80E+02, 0.10E+03, 0.10E+03, 0.10E+11, 0.10E+11, 0.10E+11, &
810 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
811 0.10E+11, 0.10E+11, 0.10E+11, 0.12E+03, 0.10E+11, 0.10E+11, &
812 0.70E+02, 0.25E+03, 0.50E+03, 0.10E+11, 0.10E+11, 0.50E+03, &
813 0.10E+11, 0.10E+11, 0.50E+03, 0.50E+03, 0.10E+11, 0.10E+11, &
814 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
815 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.12E+03, 0.10E+11, &
816 0.10E+11, 0.70E+02, 0.25E+03, 0.50E+03, 0.10E+11, 0.10E+11, &
817 0.50E+03, 0.10E+11, 0.10E+11, 0.50E+03, 0.50E+03, 0.10E+11, &
818 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
819 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
820 0.10E+11, 0.10E+11, 0.70E+02, 0.40E+03, 0.80E+03, 0.10E+11, &
821 0.10E+11, 0.80E+03, 0.10E+11, 0.10E+11, 0.80E+03, 0.80E+03, &
822 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.12E+03, 0.12E+03, &
823 0.12E+03, 0.12E+03, 0.14E+03, 0.24E+03, 0.24E+03, 0.24E+03, &
824 0.12E+03, 0.14E+03, 0.25E+03, 0.70E+02, 0.25E+03, 0.19E+03, &
825 0.10E+11, 0.16E+03, 0.19E+03, 0.10E+11, 0.16E+03, 0.19E+03, &
826 0.19E+03, 0.10E+11, 0.10E+11, 0.10E+11/
829 call wrf_debug(0, 'number of land use classifications not correct ')
830 CALL wrf_error_fatal ( "LAND USE CLASSIFICATIONS NOT 25")
832 IF (dep_seasons/=5) THEN
833 call wrf_debug(0, 'number of dep_seasons not correct ')
834 CALL wrf_error_fatal ( "DEP_SEASONS NOT 5")
837 ! SURFACE RESISTANCE DATA FOR DEPOSITION MODEL OF
838 ! M. L. WESELY, ATMOSPHERIC ENVIRONMENT 23 (1989) 1293-1304
840 ! Seasonal categories:
841 ! 1: midsummer with lush vegetation
842 ! 2: autumn with unharvested cropland
843 ! 3: late autumn with frost, no snow
844 ! 4: winter, snow on ground and subfreezing
845 ! 5: transitional spring with partially green short annuals
848 ! USGS type Wesely type
849 ! 1: Urban and built-up land 1
850 ! 2: Dryland cropland and pasture 2
851 ! 3: Irrigated cropland and pasture 2
852 ! 4: Mix. dry/irrg. cropland and pasture 2
853 ! 5: Cropland/grassland mosaic 2
854 ! 6: Cropland/woodland mosaic 4
857 ! 9: Mixed shrubland/grassland 3
858 ! 10: Savanna 3, always summer
859 ! 11: Deciduous broadleaf forest 4
860 ! 12: Deciduous needleleaf forest 5, autumn and winter modi
861 ! 13: Evergreen broadleaf forest 4, always summer
862 ! 14: Evergreen needleleaf forest 5
865 ! 17: Herbaceous wetland 9
866 ! 18: Wooded wetland 6
867 ! 19: Barren or sparsely vegetated 8
868 ! 20: Herbaceous Tundra 9
869 ! 21: Wooded Tundra 6
871 ! 23: Bare Ground Tundra 8
872 ! 24: Snow or Ice -, always winter
878 ! | seasonal category
882 ! RLU for outer surfaces in the upper canopy
883 DO iseason = 1, dep_seasons
885 ri(iland,iseason) = dat1(iland,iseason)
888 ! data ((rlu(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+11, &
889 DATA ((dat2(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, &
890 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, &
891 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, &
892 0.20E+04, 0.20E+04, 0.10E+11, 0.25E+04, 0.20E+04, 0.10E+11, &
893 0.25E+04, 0.20E+04, 0.20E+04, 0.10E+11, 0.10E+11, 0.10E+11, &
894 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, &
895 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, 0.90E+04, &
896 0.20E+04, 0.40E+04, 0.80E+04, 0.10E+11, 0.90E+04, 0.80E+04, &
897 0.10E+11, 0.90E+04, 0.80E+04, 0.80E+04, 0.10E+11, 0.10E+11, &
898 0.10E+11, 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, &
899 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, &
900 0.90E+04, 0.20E+04, 0.40E+04, 0.80E+04, 0.10E+11, 0.90E+04, &
901 0.80E+04, 0.10E+11, 0.90E+04, 0.80E+04, 0.80E+04, 0.10E+11, &
902 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
903 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
904 0.10E+11, 0.10E+11, 0.20E+04, 0.60E+04, 0.90E+04, 0.10E+11, &
905 0.90E+04, 0.90E+04, 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, &
906 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.40E+04, 0.40E+04, &
907 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, &
908 0.20E+04, 0.40E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.30E+04, &
909 0.10E+11, 0.40E+04, 0.30E+04, 0.10E+11, 0.40E+04, 0.30E+04, &
910 0.30E+04, 0.10E+11, 0.10E+11, 0.10E+11/
911 DO iseason = 1, dep_seasons
913 rlu(iland,iseason) = dat2(iland,iseason)
916 ! RAC for transfer that depends on canopy height and density
917 ! data ((rac(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+03, &
918 DATA ((dat3(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+03, &
919 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+04, 0.10E+03, &
920 0.10E+03, 0.10E+03, 0.10E+03, 0.20E+04, 0.20E+04, 0.20E+04, &
921 0.20E+04, 0.20E+04, 0.00E+00, 0.30E+03, 0.20E+04, 0.00E+00, &
922 0.30E+03, 0.20E+04, 0.20E+04, 0.00E+00, 0.00E+00, 0.00E+00, &
923 0.10E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+04, &
924 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.15E+04, 0.20E+04, &
925 0.20E+04, 0.20E+04, 0.17E+04, 0.00E+00, 0.20E+03, 0.17E+04, &
926 0.00E+00, 0.20E+03, 0.17E+04, 0.17E+04, 0.00E+00, 0.00E+00, &
927 0.00E+00, 0.10E+03, 0.10E+02, 0.10E+02, 0.10E+02, 0.10E+02, &
928 0.10E+04, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+04, &
929 0.20E+04, 0.20E+04, 0.20E+04, 0.15E+04, 0.00E+00, 0.10E+03, &
930 0.15E+04, 0.00E+00, 0.10E+03, 0.15E+04, 0.15E+04, 0.00E+00, &
931 0.00E+00, 0.00E+00, 0.10E+03, 0.10E+02, 0.10E+02, 0.10E+02, &
932 0.10E+02, 0.10E+04, 0.10E+02, 0.10E+02, 0.10E+02, 0.10E+02, &
933 0.10E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.15E+04, 0.00E+00, &
934 0.50E+02, 0.15E+04, 0.00E+00, 0.50E+02, 0.15E+04, 0.15E+04, &
935 0.00E+00, 0.00E+00, 0.00E+00, 0.10E+03, 0.50E+02, 0.50E+02, &
936 0.50E+02, 0.50E+02, 0.12E+04, 0.80E+02, 0.80E+02, 0.80E+02, &
937 0.10E+03, 0.12E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.15E+04, &
938 0.00E+00, 0.20E+03, 0.15E+04, 0.00E+00, 0.20E+03, 0.15E+04, &
939 0.15E+04, 0.00E+00, 0.00E+00, 0.00E+00/
940 DO iseason = 1, dep_seasons
942 rac(iland,iseason) = dat3(iland,iseason)
945 ! RGSS for ground surface SO2
946 ! data ((rgss(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.40E+03, &
947 DATA ((dat4(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.40E+03, &
948 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.50E+03, 0.35E+03, &
949 0.35E+03, 0.35E+03, 0.35E+03, 0.50E+03, 0.50E+03, 0.50E+03, &
950 0.50E+03, 0.10E+03, 0.10E+01, 0.10E+01, 0.10E+03, 0.10E+04, &
951 0.10E+01, 0.10E+03, 0.10E+03, 0.10E+04, 0.10E+03, 0.10E+04, &
952 0.40E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.50E+03, &
953 0.35E+03, 0.35E+03, 0.35E+03, 0.35E+03, 0.50E+03, 0.50E+03, &
954 0.50E+03, 0.50E+03, 0.10E+03, 0.10E+01, 0.10E+01, 0.10E+03, &
955 0.10E+04, 0.10E+01, 0.10E+03, 0.10E+03, 0.10E+04, 0.10E+03, &
956 0.10E+04, 0.40E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, &
957 0.50E+03, 0.35E+03, 0.35E+03, 0.35E+03, 0.35E+03, 0.50E+03, &
958 0.50E+03, 0.50E+03, 0.50E+03, 0.20E+03, 0.10E+01, 0.10E+01, &
959 0.20E+03, 0.10E+04, 0.10E+01, 0.20E+03, 0.20E+03, 0.10E+04, &
960 0.10E+03, 0.10E+04, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, &
961 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, &
962 0.10E+03, 0.10E+03, 0.50E+03, 0.10E+03, 0.10E+03, 0.10E+01, &
963 0.10E+03, 0.10E+03, 0.10E+04, 0.10E+03, 0.10E+03, 0.10E+03, &
964 0.10E+04, 0.10E+03, 0.10E+04, 0.50E+03, 0.15E+03, 0.15E+03, &
965 0.15E+03, 0.15E+03, 0.50E+03, 0.35E+03, 0.35E+03, 0.35E+03, &
966 0.35E+03, 0.50E+03, 0.50E+03, 0.50E+03, 0.50E+03, 0.20E+03, &
967 0.10E+01, 0.10E+01, 0.20E+03, 0.10E+04, 0.10E+01, 0.20E+03, &
968 0.20E+03, 0.10E+04, 0.10E+03, 0.10E+04/
969 DO iseason = 1, dep_seasons
971 rgss(iland,iseason) = dat4(iland,iseason)
974 ! RGSO for ground surface O3
975 ! data ((rgso(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.30E+03, &
976 DATA ((dat5(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.30E+03, &
977 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.20E+03, 0.20E+03, &
978 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, &
979 0.20E+03, 0.30E+03, 0.20E+04, 0.10E+04, 0.30E+03, 0.40E+03, &
980 0.10E+04, 0.30E+03, 0.30E+03, 0.40E+03, 0.35E+04, 0.40E+03, &
981 0.30E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.20E+03, &
982 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, &
983 0.20E+03, 0.20E+03, 0.30E+03, 0.20E+04, 0.80E+03, 0.30E+03, &
984 0.40E+03, 0.80E+03, 0.30E+03, 0.30E+03, 0.40E+03, 0.35E+04, &
985 0.40E+03, 0.30E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, &
986 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, &
987 0.20E+03, 0.20E+03, 0.20E+03, 0.30E+03, 0.20E+04, 0.10E+04, &
988 0.30E+03, 0.40E+03, 0.10E+04, 0.30E+03, 0.30E+03, 0.40E+03, &
989 0.35E+04, 0.40E+03, 0.60E+03, 0.35E+04, 0.35E+04, 0.35E+04, &
990 0.35E+04, 0.35E+04, 0.35E+04, 0.35E+04, 0.35E+04, 0.35E+04, &
991 0.35E+04, 0.35E+04, 0.20E+03, 0.35E+04, 0.35E+04, 0.20E+04, &
992 0.35E+04, 0.35E+04, 0.40E+03, 0.35E+04, 0.35E+04, 0.35E+04, &
993 0.40E+03, 0.35E+04, 0.40E+03, 0.30E+03, 0.15E+03, 0.15E+03, &
994 0.15E+03, 0.15E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, &
995 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.30E+03, &
996 0.20E+04, 0.10E+04, 0.30E+03, 0.40E+03, 0.10E+04, 0.30E+03, &
997 0.30E+03, 0.40E+03, 0.35E+04, 0.40E+03/
998 DO iseason = 1, dep_seasons
1000 rgso(iland,iseason) = dat5(iland,iseason)
1003 ! RCLS for exposed surfaces in the lower canopy SO2
1004 ! data ((rcls(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+11, &
1005 DATA ((dat6(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, &
1006 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, &
1007 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, &
1008 0.20E+04, 0.20E+04, 0.10E+11, 0.25E+04, 0.20E+04, 0.10E+11, &
1009 0.25E+04, 0.20E+04, 0.20E+04, 0.10E+11, 0.10E+11, 0.10E+11, &
1010 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, &
1011 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, 0.90E+04, &
1012 0.20E+04, 0.20E+04, 0.40E+04, 0.10E+11, 0.90E+04, 0.40E+04, &
1013 0.10E+11, 0.90E+04, 0.40E+04, 0.40E+04, 0.10E+11, 0.10E+11, &
1014 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
1015 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, &
1016 0.90E+04, 0.20E+04, 0.30E+04, 0.60E+04, 0.10E+11, 0.90E+04, &
1017 0.60E+04, 0.10E+11, 0.90E+04, 0.60E+04, 0.60E+04, 0.10E+11, &
1018 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
1019 0.10E+11, 0.90E+04, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, &
1020 0.90E+04, 0.90E+04, 0.20E+04, 0.20E+03, 0.40E+03, 0.10E+11, &
1021 0.90E+04, 0.40E+03, 0.10E+11, 0.90E+04, 0.40E+03, 0.40E+03, &
1022 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.40E+04, 0.40E+04, &
1023 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, &
1024 0.20E+04, 0.40E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.30E+04, &
1025 0.10E+11, 0.40E+04, 0.30E+04, 0.10E+11, 0.40E+04, 0.30E+04, &
1026 0.30E+04, 0.10E+11, 0.10E+11, 0.10E+11/
1027 DO iseason = 1, dep_seasons
1029 rcls(iland,iseason) = dat6(iland,iseason)
1032 ! RCLO for exposed surfaces in the lower canopy O3
1033 ! data ((rclo(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+11, &
1034 DATA ((dat7(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, &
1035 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, &
1036 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, &
1037 0.10E+04, 0.10E+04, 0.10E+11, 0.10E+04, 0.10E+04, 0.10E+11, &
1038 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+11, 0.10E+11, 0.10E+11, &
1039 0.10E+11, 0.40E+03, 0.40E+03, 0.40E+03, 0.40E+03, 0.40E+03, &
1040 0.40E+03, 0.40E+03, 0.40E+03, 0.10E+04, 0.40E+03, 0.40E+03, &
1041 0.10E+04, 0.10E+04, 0.60E+03, 0.10E+11, 0.40E+03, 0.60E+03, &
1042 0.10E+11, 0.40E+03, 0.60E+03, 0.60E+03, 0.10E+11, 0.10E+11, &
1043 0.10E+11, 0.10E+11, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, &
1044 0.40E+03, 0.40E+03, 0.40E+03, 0.40E+03, 0.10E+04, 0.40E+03, &
1045 0.40E+03, 0.10E+04, 0.10E+04, 0.60E+03, 0.10E+11, 0.80E+03, &
1046 0.60E+03, 0.10E+11, 0.80E+03, 0.60E+03, 0.60E+03, 0.10E+11, &
1047 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+04, 0.10E+04, 0.10E+04, &
1048 0.10E+04, 0.40E+03, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, &
1049 0.40E+03, 0.40E+03, 0.10E+04, 0.15E+04, 0.60E+03, 0.10E+11, &
1050 0.80E+03, 0.60E+03, 0.10E+11, 0.80E+03, 0.60E+03, 0.60E+03, &
1051 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+04, 0.10E+04, &
1052 0.10E+04, 0.10E+04, 0.50E+03, 0.50E+03, 0.50E+03, 0.50E+03, &
1053 0.10E+04, 0.50E+03, 0.15E+04, 0.10E+04, 0.15E+04, 0.70E+03, &
1054 0.10E+11, 0.60E+03, 0.70E+03, 0.10E+11, 0.60E+03, 0.70E+03, &
1055 0.70E+03, 0.10E+11, 0.10E+11, 0.10E+11/
1056 DO iseason = 1, dep_seasons
1058 rclo(iland,iseason) = dat7(iland,iseason)
1069 ! HENRY''S LAW COEFFICIENTS
1070 ! Effective Henry''s law coefficient at pH 7
1071 ! [KH298]=mole/(l atm)
1073 hstar(p_no2) = 6.40E-3
1074 hstar(p_no) = 1.90E-3
1075 hstar(p_pan) = 2.97E+0
1076 hstar(p_o3) = 1.13E-2
1077 hstar(p_hcho) = 2.97E+3
1078 hstar(p_aco3) = 1.14E+1
1079 hstar(p_tpan) = 2.97E+0
1080 hstar(p_hono) = 3.47E+5
1081 hstar(p_no3) = 1.50E+1
1082 hstar(p_hno4) = 2.00E+13
1083 hstar(p_h2o2) = 7.45E+4
1084 hstar(p_co) = 8.20E-3
1085 hstar(p_ald) = 1.14E+1
1086 hstar(p_op1) = 2.21E+2
1087 hstar(p_op2) = 1.68E+6
1088 hstar(p_paa) = 4.73E+2
1089 hstar(p_ket) = 3.30E+1
1090 hstar(p_gly) = 1.40E+6
1091 hstar(p_mgly) = 3.71E+3
1092 hstar(p_dcb) = 1.40E+6
1093 hstar(p_onit) = 1.13E+0
1094 hstar(p_so2) = 2.53E+5
1095 hstar(p_eth) = 2.00E-3
1096 hstar(p_hc3) = 1.42E-3
1097 hstar(p_hc5) = 1.13E-3
1098 hstar(p_hc8) = 1.42E-3
1099 hstar(p_olt) = 4.76E-3
1100 hstar(p_oli) = 1.35E-3
1101 hstar(p_tol) = 1.51E-1
1102 hstar(p_csl) = 4.00E+5
1103 hstar(p_xyl) = 1.45E-1
1104 hstar(p_iso) = 4.76E-3
1105 hstar(p_hno3) = 2.69E+13
1106 hstar(p_ora1) = 9.85E+6
1107 hstar(p_ora2) = 9.63E+5
1108 hstar(p_nh3) = 1.04E+4
1109 hstar(p_n2o5) = 1.00E+10
1110 if(p_ol2.gt.1)hstar(p_ol2) = 4.67E-3
1112 ! FOLLOWING FOR RACM
1115 HSTAR(p_ETE )=4.67E-3
1116 HSTAR(p_API )=4.76E-3
1117 HSTAR(p_LIM )=4.76E-3
1118 HSTAR(p_DIEN)=4.76E-3
1119 HSTAR(p_CH4 )=1.50E-3
1120 HSTAR(p_CO2 )=1.86E-1
1121 HSTAR(p_MACR)=1.14E+1
1122 HSTAR(p_UDD )=1.40E+6
1123 HSTAR(p_HKET)=7.80E+3
1152 ! -DH/R (for temperature correction)
1192 if(p_ol2.gt.1)dhr(p_ol2) = 0.
1193 ! REACTIVITY FACTORS
1233 if(p_ol2.gt.1)f0(p_ol2) = 0.
1234 ! DIFFUSION COEFFICIENTS
1235 ! [DV]=cm2/s (assumed: 1/SQRT(molar mass) when not known)
1276 if(p_ol2.gt.1)dvj(p_ol2) = 0.189
1278 hstar4(l) = hstar(l) ! preliminary
1279 ! Correction of diff. coeff
1280 dvj(l) = dvj(l)*(293.15/298.15)**1.75
1281 sc = 0.15/dvj(l) ! Schmidt Number at 20°C
1282 dratio(l) = 0.242/dvj(l) ! ! of water vapor and gas at
1283 ! Ratio of diffusion coeffi
1284 scpr23(l) = (sc/0.72)**(2./3.) ! (Schmidt # / Prandtl #)**
1289 ! DATA FOR AEROSOL PARTICLE DEPOSITION FOR THE MODEL OF
1290 ! J. W. ERISMAN, A. VAN PUL AND P. WYERS
1291 ! ATMOSPHERIC ENVIRONMENT 28 (1994), 2595-2607
1293 ! vd = (u* / k) * CORRECTION FACTORS
1295 ! CONSTANT K FOR LANDUSE TYPES:
1296 ! urban and built-up land
1298 ! dryland cropland and pasture
1300 ! irrigated cropland and pasture
1302 ! mixed dryland/irrigated cropland and past
1304 ! cropland/grassland mosaic
1306 ! cropland/woodland mosaic
1312 ! mixed shrubland/grassland
1316 ! deciduous broadleaf forest
1318 ! deciduous needleleaf forest
1320 ! evergreen broadleaf forest
1322 ! evergreen needleleaf forest
1328 ! herbaceous wetland
1332 ! barren or sparsely vegetated
1340 ! bare ground tundra
1346 ! Erisman et al. (1994) give
1347 ! k = 500 for low vegetation and k = 100 for forests.
1349 ! For desert k = 500 is taken according to measurements
1351 ! J. Fontan, A. Lopez, E. Lamaud and A. Druilhet (1997)
1352 ! Vertical Flux Measurements of the Submicronic Aerosol Particles
1353 ! and Parametrisation of the Dry Deposition Velocity
1354 ! in: Biosphere-Atmosphere Exchange of Pollutants
1355 ! and Trace Substances
1356 ! Editor: S. Slanina. Springer-Verlag Berlin, Heidelberg, 1997
1359 ! For coniferous forest the Erisman value of k = 100 is taken.
1360 ! Measurements of Erisman et al. (1997) in a coniferous forest
1361 ! in the Netherlands, lead to values of k between 20 and 38
1362 ! (Atmospheric Environment 31 (1997), 321-332).
1363 ! However, these high values of vd may be reached during
1364 ! instable cases. The eddy correlation measurements
1365 ! of Gallagher et al. (1997) made during the same experiment
1366 ! show for stable cases (L>0) values of k between 200 and 250
1367 ! at minimum (Atmospheric Environment 31 (1997), 359-373).
1368 ! Fontan et al. (1997) found k = 250 in a forest
1369 ! of maritime pine in southwestern France.
1371 ! For gras, model calculations of Davidson et al. support
1373 ! C. I. Davidson, J. M. Miller and M. A. Pleskov
1374 ! The Influence of Surface Structure on Predicted Particles
1375 ! Dry Deposition to Natural Gras Canopies
1376 ! Water, Air, and Soil Pollution 18 (1982) 25-43
1378 ! Snow covered surface: The experiment of Ibrahim et al. (1983)
1379 ! gives k = 436 for 0.7 um diameter particles.
1380 ! The deposition velocity of Milford and Davidson (1987)
1381 ! gives k = 154 for continental sulfate aerosol.
1382 ! M. Ibrahim, L. A. Barrie and F. Fanaki
1383 ! Atmospheric Environment 17 (1983), 781-788
1385 ! J. B. Milford and C. I. Davidson
1386 ! The Sizes of Particulate Sulfate and Nitrate in the Atmosphere
1388 ! JAPCA 37 (1987), 125-134
1390 ! WRITE (0,*) ' return from rcread '
1391 ! *********************************************************
1393 ! Simplified landuse scheme for deposition and biogenic emission
1395 ! (ISWATER and ISICE are already defined elsewhere,
1396 ! therefore water and ice are not considered here)
1398 ! 1 urban or bare soil
1401 ! 4 deciduous forest
1402 ! 5 coniferous and mixed forest
1403 ! 6 other natural landuse categories
1406 IF (mminlu=='OLD ') THEN
1421 IF (mminlu=='USGS') THEN
1448 IF (mminlu=='SiB ') THEN
1468 END SUBROUTINE dep_init
1469 END MODULE module_dep_simple