MODULE module_dep_simple IMPLICIT NONE !-------------------------------------------------- ! many of these parameters will depend on the RADM mechanism! ! if you change it, lets talk about it and get it done!!! !-------------------------------------------------- INTEGER, PARAMETER :: dep_seasons = 5 INTEGER, PARAMETER :: nlu = 25 REAL, parameter :: small_value = 1.e-36 REAL, parameter :: large_value = 1.e36 !-------------------------------------------------- ! following currently hardwired to USGS !-------------------------------------------------- integer, parameter :: isice_temp = 24 integer, parameter :: iswater_temp = 16 integer, parameter :: wrf2mz_lt_map(nlu) = (/ 1, 2, 2, 2, 2, & 4, 3, 3, 3, 3, & 4, 5, 4, 5, 6, & 7, 9, 6, 8, 9, & 6, 6, 8, 0, 0 /) real, parameter :: wh2o = 18.0153 real, parameter :: wpan = 121.04793 character(len=4), parameter :: mminlu = 'USGS' INTEGER :: month = 0 INTEGER :: ixxxlu(nlu) ! include modis landuse INTEGER, allocatable :: luse2usgs(:) INTEGER, allocatable :: HL_ndx(:) !-- REAL :: kpart(nlu) REAL :: rac(nlu,dep_seasons), rclo(nlu,dep_seasons), rcls(nlu,dep_seasons) REAL :: rgso(nlu,dep_seasons), rgss(nlu,dep_seasons) REAL :: ri(nlu,dep_seasons), rlu(nlu,dep_seasons) REAL :: ri_pan(5,11) real :: c0_pan(11) = (/ 0.000, 0.006, 0.002, 0.009, 0.015, & 0.006, 0.000, 0.000, 0.000, 0.002, 0.002 /) real :: k_pan (11) = (/ 0.000, 0.010, 0.005, 0.004, 0.003, & 0.005, 0.000, 0.000, 0.000, 0.075, 0.002 /) !-------------------------------------------------- ! NO MORE THAN 1000 SPECIES FOR DEPOSITION !-------------------------------------------------- REAL :: dratio(1000), hstar(1000), hstar4(1000) REAL :: f0(1000), dhr(1000), scpr23(1000) type wesely_pft integer :: npft integer :: months INTEGER, pointer :: seasonal_wes(:,:,:,:) logical :: is_allocated end type wesely_pft type(wesely_pft), allocatable :: seasonal_pft(:) !-------------------------------------------------- ! .. Default Accessibility .. !-------------------------------------------------- PUBLIC PRIVATE :: HL_init logical, allocatable :: is_aerosol(:) ! true if field is aerosol (any phase) CONTAINS SUBROUTINE wesely_driver( id, ktau, dtstep, config_flags, current_month, & gmt, julday, t_phy,moist, p8w, t8w, raincv, & p_phy, chem, rho_phy, dz8w, ddvel, aer_res_def, & aer_res_zcen, ivgtyp, tsk, gsw, vegfra, pbl, & rmol, ust, znt, xlat, xlong, & z, z_at_w, snowh, numgas, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte ) !-------------------------------------------------- ! Wesely dry dposition driver !-------------------------------------------------- USE module_model_constants USE module_configure USE module_state_description USE module_data_sorgam USE module_state_description, only: param_first_scalar INTEGER, INTENT(IN ) :: id,julday, & numgas, current_month, & ids,ide, jds,jde, kds,kde, & ims,ime, jms,jme, kms,kme, & its,ite, jts,jte, kts,kte INTEGER, INTENT(IN ) :: ktau REAL, INTENT(IN ) :: dtstep,gmt !-------------------------------------------------- ! advected moisture variables !-------------------------------------------------- REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), INTENT(IN ) :: & moist !-------------------------------------------------- ! advected chemical species !-------------------------------------------------- REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), INTENT(IN ) :: & chem !-------------------------------------------------- ! deposition velocities !-------------------------------------------------- REAL, DIMENSION( its:ite, jts:jte, num_chem ), INTENT(INOUT ) :: & ddvel !-------------------------------------------------- ! input from met model !-------------------------------------------------- REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), INTENT(IN ) :: & t_phy, & p_phy, & dz8w, & z, & t8w, & p8w, & z_at_w, & rho_phy INTEGER,DIMENSION( ims:ime , jms:jme ), INTENT(IN ) :: & ivgtyp REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT ) :: & rmol REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ) :: & tsk, & gsw, & vegfra, & pbl, & ust, & xlat, & xlong, & raincv, & znt REAL, intent(inout) :: aer_res_def(its:ite,jts:jte) REAL, intent(inout) :: aer_res_zcen(its:ite,jts:jte) REAL, optional, INTENT(IN) :: snowh(ims:ime,jms:jme) TYPE(grid_config_rec_type), INTENT(IN) :: config_flags !-------------------------------------------------- ! .. Local Scalars !-------------------------------------------------- REAL :: clwchem, dvfog, dvpart, pa, rad, dep_vap REAL :: rhchem, ta, ustar, vegfrac, z1, zntt INTEGER :: i, iland, iprt, iseason, j, jce, jcs, n, nr, ipr,jpr,nvr LOGICAL :: highnh3, rainflag, vegflag, wetflag LOGICAL :: chm_is_moz !-------------------------------------------------- ! .. Local Arrays !-------------------------------------------------- REAL :: p(kts:kte) REAL :: srfres(numgas) REAL :: ddvel0d(numgas) !----------------------------------------------------------- ! necessary for aerosols (module dependent) !----------------------------------------------------------- real :: rcx(numgas) !----------------------------------------------------------- ! .. Intrinsic Functions !----------------------------------------------------------- INTRINSIC max, min chm_is_moz = config_flags%chem_opt == MOZART_KPP .or. & config_flags%chem_opt == MOZCART_KPP .or. & config_flags%chem_opt == T1_MOZCART_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP dep_vap= config_flags%depo_fact CALL wrf_debug(15,'in dry_dep_wesely') if( .not. chm_is_moz ) then if( julday < 90 .or. julday > 270 ) then iseason = 2 CALL wrf_debug(15,'setting iseason to 2') else iseason = 1 endif end if tile_lat_loop : & do j = jts,jte tile_lon_loop : & do i = its,ite iprt = 0 iland = luse2usgs( ivgtyp(i,j) ) !-- if( chm_is_moz ) then if( snowh(i,j) < .01 ) then iseason = seasonal_pft(id)%seasonal_wes(i,j,iland,current_month) else iseason = 4 endif end if ta = tsk(i,j) rad = gsw(i,j) vegfrac = vegfra(i,j) pa = .01*p_phy(i,kts,j) clwchem = moist(i,kts,j,p_qc) ustar = ust(i,j) zntt = znt(i,j) z1 = z_at_w(i,kts+1,j) - z_at_w(i,kts,j) !----------------------------------------------------------- ! Set logical default values !----------------------------------------------------------- rainflag = .FALSE. wetflag = .FALSE. highnh3 = .FALSE. if(p_qr >= param_first_scalar) then if(moist(i,kts,j,p_qr) > 1.e-18 .or. raincv(i,j) > 0.) then rainflag = .true. endif endif rhchem = MIN( 100.,100. * moist(i,kts,j,p_qv) / & (3.80*exp(17.27*(t_phy(i,kts,j)-273.)/(t_phy(i,kts,j)-36.))/pa)) rhchem = MAX(5.,RHCHEM) if (rhchem >= 95.) wetflag = .true. if( p_nh3 >= param_first_scalar .and. p_so2 >= param_first_scalar ) then if( chem(i,kts,j,p_nh3) > 2.*chem(i,kts,j,p_so2) ) then highnh3 = .true. endif endif !----------------------------------------------------------- !--- deposition !----------------------------------------------------------- ! if(snowc(i,j).gt.0.)iseason=4 CALL rc( rcx, ta, rad, rhchem, iland, & iseason, numgas, wetflag, rainflag, highnh3, & iprt, moist(i,kts,j,p_qv), p8w(i,kts,j), & config_flags%chem_opt, chm_is_moz ) if( .not. chm_is_moz ) then srfres(1:numgas-2) = rcx(1:numgas-2) srfres(numgas-1:numgas) = 0. else srfres(1:numgas) = rcx(1:numgas) end if CALL deppart( rmol(i,j), ustar, rhchem, clwchem, iland, dvpart, dvfog ) ddvel0d(1:numgas) = 0. aer_res_def(i,j) = 0. aer_res_zcen(i,j) = 0. CALL landusevg( ddvel0d, ustar, rmol(i,j), zntt, z1, dvpart, iland, & numgas, srfres, aer_res_def(i,j), aer_res_zcen(i,j), p_sulf ) !----------------------------------------------------------- !wig: CBMZ does not have HO and HO2 last so need to copy all species ! ddvel(i,j,1:numgas-2)=ddvel0d(1:numgas-2) !----------------------------------------------------------- ddvel(i,j,1:numgas) = ddvel0d(1:numgas) if ( (config_flags%chem_opt == RADM2 ) .or. & (config_flags%chem_opt == RADM2SORG ) .or. & (config_flags%chem_opt == RADM2SORG_AQ ) .or. & (config_flags%chem_opt == RADM2SORG_AQCHEM) ) then ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3) end if end do tile_lon_loop end do tile_lat_loop !----------------------------------------------------------- ! For the additional CBMZ species, assign similar RADM counter parts for ! now. Short lived species get a zero velocity since dry dep should be ! unimportant. **ALSO**, treat p_sulf as h2so4 vapor, not aerosol sulfate !----------------------------------------------------------- if ( (config_flags%chem_opt == CBMZ ) .or. & (config_flags%chem_opt == CBMZ_BB ) .or. & (config_flags%chem_opt == CBMZ_BB_KPP ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_KPP ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_4BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_8BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_4BIN) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_8BIN) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_4BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_8BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_4BIN) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_8BIN) .or. & (config_flags%chem_opt == CBMZ_CAM_MAM3_NOAQ ) .or. & (config_flags%chem_opt == CBMZ_CAM_MAM3_AQ ) .or. & (config_flags%chem_opt == CBMZ_CAM_MAM7_NOAQ ) .or. & (config_flags%chem_opt == CBMZ_CAM_MAM7_AQ ) ) then do j=jts,jte do i=its,ite ddvel(i,j,p_sulf) = ddvel(i,j,p_hno3) ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3) ddvel(i,j,p_ch3o2) = 0 ddvel(i,j,p_ethp) = 0 ddvel(i,j,p_ch3oh) = ddvel(i,j,p_hcho) ddvel(i,j,p_c2h5oh) = ddvel(i,j,p_hcho) !wig, 1-May-2007 (added par to tables) ddvel(i,j,p_par) = ddvel(i,j,p_hc5) ddvel(i,j,p_to2) = 0 ddvel(i,j,p_cro) = 0 ddvel(i,j,p_open) = ddvel(i,j,p_xyl) ddvel(i,j,p_op3) = ddvel(i,j,p_op2) ddvel(i,j,p_c2o3) = 0 ddvel(i,j,p_ro2) = 0 ddvel(i,j,p_ano2) = 0 ddvel(i,j,p_nap) = 0 ddvel(i,j,p_xo2) = 0 ddvel(i,j,p_xpar) = 0 ddvel(i,j,p_isoprd) = 0 ddvel(i,j,p_isopp) = 0 ddvel(i,j,p_isopn) = 0 ddvel(i,j,p_isopo2) = 0 if((config_flags%chem_opt == CBMZ ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_4BIN) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_8BIN) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_4BIN_AQ) .or. & (config_flags%chem_opt == CBMZ_MOSAIC_DMS_8BIN_AQ) ) then ddvel(i,j,p_dms) = 0 ddvel(i,j,p_msa) = ddvel(i,j,p_hno3) ddvel(i,j,p_dmso) = 0 ddvel(i,j,p_dmso2) = 0 ddvel(i,j,p_ch3so2h) = 0 ddvel(i,j,p_ch3sch2oo) = 0 ddvel(i,j,p_ch3so2) = 0 ddvel(i,j,p_ch3so3) = 0 ddvel(i,j,p_ch3so2oo) = 0 ddvel(i,j,p_ch3so2ch2oo) = 0 ddvel(i,j,p_mtf) = 0 end if if( ( config_flags%chem_opt == CBMZ_CAM_MAM3_NOAQ ) .or. & ( config_flags%chem_opt == CBMZ_CAM_MAM3_AQ ) .or. & ( config_flags%chem_opt == CBMZ_CAM_MAM7_NOAQ ) .or. & ( config_flags%chem_opt == CBMZ_CAM_MAM7_AQ ) ) then ddvel(i,j,p_soag) = 0.0 end if end do end do end if !!!!TUCCELLA if (config_flags%chem_opt == RACM_SOA_VBS_KPP .OR. & config_flags%chem_opt == RACM_SOA_VBS_HET_KPP .OR. & config_flags%chem_opt == RACM_SOA_VBS_AQCHEM_KPP) then do j=jts,jte do i=its,ite ddvel(i,j,p_cvasoa1) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvasoa2) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvasoa3) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvasoa4) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa1) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa2) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa3) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa4) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_sesq) = 0. ddvel(i,j,p_mbo) = 0. end do end do end if if (config_flags%chem_opt == RACM_SOA_VBS_HET_KPP) then do j=jts,jte do i=its,ite ddvel(i,j,p_hcl) = dep_vap*ddvel(i,j,p_hno3) ddvel(i,j,p_clno2) = 0.0 ddvel(i,j,p_cl2) = 0.0 ddvel(i,j,p_fmcl) = 0.0 ddvel(i,j,p_cl) = 0.0 ddvel(i,j,p_clo) = 0.0 ddvel(i,j,p_hocl) = 0.0 ddvel(i,j,p_ch3cl) = 0.0 end do end do end if !----------------------------------------------------------- ! For the additional CBM4 species, assign similar RADM counter parts for ! now. Short lived species get a zero velocity since dry dep should be ! unimportant. !----------------------------------------------------------- if (config_flags%chem_opt == CBM4_KPP ) then do j=jts,jte do i=its,ite ddvel(i,j,p_open) = ddvel(i,j,p_xyl) ddvel(i,j,p_ro2) = 0 ddvel(i,j,p_xo2) = 0 ddvel(i,j,p_ald2) = ddvel(i,j,p_ald) ddvel(i,j,p_iso) = 0 end do end do end if if (config_flags%chem_opt == CBMZ_MOSAIC_KPP ) then do j=jts,jte do i=its,ite ddvel(i,j,p_aro1) = 0 ddvel(i,j,p_aro2) = 0 ddvel(i,j,p_alk1) = 0 ddvel(i,j,p_ole1) = 0 ddvel(i,j,p_api1) = 0 ddvel(i,j,p_api2) = 0 ddvel(i,j,p_lim1) = 0 ddvel(i,j,p_lim2) = 0 ddvel(i,j,p_api) = 0 ddvel(i,j,p_lim) = 0 end do end do end if ! For gocartracm,radm !----------------------------------------------------------- if ((config_flags%chem_opt == GOCARTRACM_KPP) .OR. & (config_flags%chem_opt == GOCARTRADM2)) then do j=jts,jte do i=its,ite ddvel(i,j,p_sulf) = 0. ddvel(i,j,p_dms) = 0. ddvel(i,j,p_msa) = ddvel(i,j,p_hno3) if( config_flags%chem_opt == GOCARTRADM2 ) then ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3) end if end do end do end if !----------------------------------------------------------- ! For gocartsimple : need msa. On the other hand sulf comes from aerosol routine !----------------------------------------------------------- if (config_flags%chem_opt == GOCART_SIMPLE ) then do j=jts,jte do i=its,ite ddvel(i,j,p_msa) = ddvel(i,j,p_sulf) ddvel(i,j,p_sulf) = 0. ddvel(i,j,p_dms) = 0. end do end do end if !----------------------------------------------------------- ! For mozart !----------------------------------------------------------- if( chm_is_moz ) then do j=jts,jte do i=its,ite ddvel(i,j,p_mpan) = ddvel(i,j,p_mpan)/3. ddvel(i,j,p_mvkooh) = ddvel(i,j,p_hno3) ddvel(i,j,p_isooh) = ddvel(i,j,p_hno3) ddvel(i,j,p_xooh) = ddvel(i,j,p_hno3) ddvel(i,j,p_o) = 0. ddvel(i,j,p_o1d_cb4) = 0. ddvel(i,j,p_no3) = 0. ddvel(i,j,p_n2o5) = 0. ddvel(i,j,p_ho) = 0. ddvel(i,j,p_ho2) = 0. ddvel(i,j,p_ch3o2) = 0. ddvel(i,j,p_n2o) = 0. ddvel(i,j,p_ch4) = 0. ddvel(i,j,p_h2) = 0. ddvel(i,j,p_co2) = 0. ddvel(i,j,p_c2h4) = 0. ddvel(i,j,p_c2h6) = 0. ddvel(i,j,p_c3h6) = 0. ddvel(i,j,p_c3h8) = 0. ddvel(i,j,p_aco3) = 0. ddvel(i,j,p_gly) = 0.2 / 100. ! from Washenfelder et al., 2011 ddvel(i,j,p_mgly) = 0. ! ddvel(i,j,p_macr) = 0. ddvel(i,j,p_mek) = 0. ddvel(i,j,p_eto2) = 0. ddvel(i,j,p_open) = 0. ddvel(i,j,p_eo) = 0. ddvel(i,j,p_pro2) = 0. ddvel(i,j,p_po2) = 0. ddvel(i,j,p_aceto2) = 0. ddvel(i,j,p_bigene) = 0. ddvel(i,j,p_bigalk) = 0. ddvel(i,j,p_eneo2) = 0. ddvel(i,j,p_alko2) = 0. ddvel(i,j,p_isopr) = 0. ddvel(i,j,p_iso2) = 0. ddvel(i,j,p_mvko2) = 0. ddvel(i,j,p_xo2) = 0. ddvel(i,j,p_c10h16) = 0. ddvel(i,j,p_terpo2) = 0. ddvel(i,j,p_tol) = 0. ddvel(i,j,p_to2) = 0. ddvel(i,j,p_xoh) = 0. ddvel(i,j,p_isopn) = 0. ddvel(i,j,p_meko2) = 0. ddvel(i,j,p_dms) = 0. IF ( config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .OR. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) THEN ddvel(i,j,p_benzene) = 0. ddvel(i,j,p_phen) = 0. ddvel(i,j,p_bepomuc) = 0. ddvel(i,j,p_benzo2) = 0. ddvel(i,j,p_pheno2) = 0. ddvel(i,j,p_pheno) = 0. ddvel(i,j,p_phenooh) = ddvel(i,j,p_h2o2) ddvel(i,j,p_c6h5o2) = 0. ddvel(i,j,p_c6h5ooh) = ddvel(i,j,p_h2o2) ddvel(i,j,p_benzooh) = ddvel(i,j,p_h2o2) ddvel(i,j,p_bigald1) = 0. ddvel(i,j,p_bigald2) = 0. ddvel(i,j,p_bigald3) = 0. ddvel(i,j,p_bigald4) = 0. ddvel(i,j,p_malo2) = 0. ddvel(i,j,p_pbznit) = 0. ddvel(i,j,p_tepomuc) = 0. ddvel(i,j,p_bzoo) = 0. ddvel(i,j,p_bzooh) = ddvel(i,j,p_h2o2) ddvel(i,j,p_bald) = 0. ddvel(i,j,p_acbzo2) = 0. ddvel(i,j,p_dicarbo2) = 0. ddvel(i,j,p_mdialo2) = 0. ddvel(i,j,p_xyl) = 0. ddvel(i,j,p_xylol) = 0. ddvel(i,j,p_xylolo2) = 0. ddvel(i,j,p_xylolooh) = ddvel(i,j,p_h2o2) ddvel(i,j,p_xyleno2) = 0. ddvel(i,j,p_xylenooh) = ddvel(i,j,p_h2o2) IF ( config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP) THEN ddvel(i,j,p_voca) = 0. ddvel(i,j,p_vocbb) = 0. ddvel(i,j,p_smpa) = 0. ddvel(i,j,p_smpbb) = 0. ENDIF ENDIF end do end do IF ( config_flags%chem_opt /= T1_MOZCART_KPP) THEN do j=jts,jte ddvel(its:ite,j,p_iso2) = 0. end do ELSE do j=jts,jte ddvel(its:ite,j,p_benzene) = 0. ddvel(its:ite,j,p_bepomuc) = 0. ddvel(its:ite,j,p_benzo2) = 0. ddvel(its:ite,j,p_pheno2) = 0. ddvel(its:ite,j,p_pheno) = 0. ddvel(its:ite,j,p_phenol) = 0. ddvel(its:ite,j,p_phenooh) = ddvel(its:ite,j,p_h2o2) ddvel(its:ite,j,p_c6h5o2) = 0. ddvel(its:ite,j,p_c6h5ooh) = ddvel(its:ite,j,p_h2o2) ddvel(its:ite,j,p_benzooh) = ddvel(its:ite,j,p_h2o2) ddvel(its:ite,j,p_bigald1) = 0. ddvel(its:ite,j,p_bigald2) = 0. ddvel(its:ite,j,p_bigald3) = 0. ddvel(its:ite,j,p_bigald4) = 0. ddvel(its:ite,j,p_bzald) = 0. ddvel(its:ite,j,p_malo2) = 0. ddvel(its:ite,j,p_pbznit) = 0. ddvel(its:ite,j,p_tepomuc) = 0. ddvel(its:ite,j,p_bzoo) = 0. ddvel(its:ite,j,p_bzooh) = ddvel(its:ite,j,p_h2o2) ddvel(its:ite,j,p_acbzo2) = 0. ddvel(its:ite,j,p_dicarbo2) = 0. ddvel(its:ite,j,p_mdialo2) = 0. ddvel(its:ite,j,p_xylenes) = 0. ddvel(its:ite,j,p_xylol) = 0. ddvel(its:ite,j,p_xylolo2) = 0. ddvel(its:ite,j,p_xylolooh) = ddvel(its:ite,j,p_h2o2) ddvel(its:ite,j,p_xyleno2) = 0. ddvel(its:ite,j,p_xylenooh) = ddvel(its:ite,j,p_h2o2) end do ENDIF IF( config_flags%chem_opt == MOZART_KPP .or. config_flags%chem_opt == MOZCART_KPP ) THEN do j=jts,jte ddvel(its:ite,j,p_c10h16) = 0. ddvel(its:ite,j,p_xoh) = 0. end do ENDIF IF( config_flags%chem_opt == MOZART_KPP .or. config_flags%chem_opt == MOZCART_KPP & .or. config_flags%chem_opt == T1_MOZCART_KPP ) then do j=jts,jte ddvel(its:ite,j,p_sulf) = 0. end do ENDIF IF( p_o1d > param_first_scalar ) then do j=jts,jte ddvel(its:ite,j,p_o1d) = 0. end do ENDIF IF( p_o1d_cb4 > param_first_scalar ) then do j=jts,jte ddvel(its:ite,j,p_o1d_cb4) = 0. end do ENDIF end if !----------------------------------------------------------- ! For CRI !----------------------------------------------------------- if( config_flags%chem_opt == crimech_kpp .or. & config_flags%chem_opt == cri_mosaic_8bin_aq_kpp .or. & config_flags%chem_opt == cri_mosaic_4bin_aq_kpp ) then do j=jts,jte do i=its,ite ! need to add deposition rates for crimech species here ddvel(i,j,p_ch3co2h) = 0. ddvel(i,j,p_clno2) = 0. !ddvel(i,j,p_n2o5 ) = 0. !ddvel(i,j,p_o1d) = 0. !ddvel(i,j,p_o3p) = 0. ddvel(i,j,p_c2h6) = 0. ddvel(i,j,p_aco3) = 0. !ddvel(i,j,p_ch3oo) = 0. ddvel(i,j,p_hso3) = 0. ddvel(i,j,p_so3) = 0. ddvel(i,j,p_c3h8) = 0. ddvel(i,j,p_nc4h10) = 0. ddvel(i,j,p_c5h8) = 0. ddvel(i,j,p_benzene) = 0. ddvel(i,j,p_toluene) = 0. ddvel(i,j,p_oxyl) = 0. ddvel(i,j,p_npropol) = 0. ddvel(i,j,p_c2h2) = 0. ddvel(i,j,p_c3h6) = 0. ddvel(i,j,p_c2h4) = 0. ddvel(i,j,p_tbut2ene) = 0. ddvel(i,j,p_mek) = 0. ddvel(i,j,p_ipropol) = 0. ddvel(i,j,p_apinene) = 0. ddvel(i,j,p_bpinene) = 0. !ddvel(i,j,p_c2h5co3) = 0. !ddvel(i,j,p_hoch2co3) = 0. ddvel(i,j,p_ch3cl) = 0. ddvel(i,j,p_ch2cl2) = 0. ddvel(i,j,p_chcl3) = 0. ddvel(i,j,p_ch3ccl3) = 0. ddvel(i,j,p_cdicleth) = 0. ddvel(i,j,p_tdicleth) = 0. ddvel(i,j,p_tricleth ) = 0. ddvel(i,j,p_tce) = 0. ddvel(i,j,p_noa) = 0. ddvel(i,j,p_aroh14) = 0. ddvel(i,j,p_raroh14) = 0. ddvel(i,j,p_arnoh14) = 0. ddvel(i,j,p_aroh17) = 0. ddvel(i,j,p_raroh17) = 0. ddvel(i,j,p_arnoh17) = 0. ddvel(i,j,p_anhy) = 0. ddvel(i,j,p_ch4) = 0. ddvel(i,j,p_sulf) = ddvel(i,j,p_hno3) ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3) ddvel(i,j,p_h2) = 0. ddvel(i,j,p_tm123b) = 0. ddvel(i,j,p_tm124b) = 0. ddvel(i,j,p_tm135b) = 0. ddvel(i,j,p_oethtol) = 0. ddvel(i,j,p_methtol) = 0. ddvel(i,j,p_pethtol) = 0. ddvel(i,j,p_dime35eb) = 0. ddvel(i,j,p_dms) = 0. ddvel(i,j,p_ch3sch2oo) = 0. ddvel(i,j,p_dmso) = 0. ddvel(i,j,p_ch3s) = 0. ddvel(i,j,p_ch3so) = 0. ddvel(i,j,p_ch3so3) = 0. ddvel(i,j,p_msa) = 0. ddvel(i,j,p_msia) = 0. ddvel(i,j,p_ho) = 0. ddvel(i,j,p_ho2) = 0. ddvel(i,j,p_ch3oo) = 0. ddvel(i,j,p_c2h5o2) = 0. ddvel(i,j,p_hoch2ch2o2) = 0. ddvel(i,j,p_ic3h7o2) = 0. ddvel(i,j,p_rn10o2) = 0. ddvel(i,j,p_rn13o2) = 0. ddvel(i,j,p_rn16o2) = 0. ddvel(i,j,p_rn19o2) = 0. ddvel(i,j,p_rn9o2) = 0. ddvel(i,j,p_rn12o2) = 0. ddvel(i,j,p_rn15o2) = 0. ddvel(i,j,p_rn18o2) = 0. ddvel(i,j,p_nrn6o2) = 0. ddvel(i,j,p_nrn9o2) = 0. ddvel(i,j,p_nrn12o2) = 0. ddvel(i,j,p_rn11o2) = 0. ddvel(i,j,p_rn14o2) = 0. ddvel(i,j,p_rn8o2) = 0. ddvel(i,j,p_rn17o2) = 0. ddvel(i,j,p_rn13ao2) = 0. ddvel(i,j,p_rn16ao2) = 0. ddvel(i,j,p_rn15ao2) = 0. ddvel(i,j,p_rn18ao2) = 0. ddvel(i,j,p_ru14o2) = 0. ddvel(i,j,p_ru12o2) = 0. ddvel(i,j,p_ru10o2) = 0. ddvel(i,j,p_nru14o2) = 0. ddvel(i,j,p_nru12o2) = 0. ddvel(i,j,p_ra13o2) = 0. ddvel(i,j,p_ra16o2) = 0. ddvel(i,j,p_ra19ao2) = 0. ddvel(i,j,p_ra19co2) = 0. ddvel(i,j,p_rtn28o2) = 0. ddvel(i,j,p_rtn26o2) = 0. ddvel(i,j,p_nrtn28o2) = 0. ddvel(i,j,p_rtn25o2) = 0. ddvel(i,j,p_rtn24o2) = 0. ddvel(i,j,p_rtn23o2) = 0. ddvel(i,j,p_rtn14o2) = 0. ddvel(i,j,p_rtn10o2) = 0. ddvel(i,j,p_rtx28o2) = 0. ddvel(i,j,p_rtx24o2) = 0. ddvel(i,j,p_rtx22o2) = 0. ddvel(i,j,p_nrtx28o2) = 0. ddvel(i,j,p_ch3o2no2) = 0. ddvel(i,j,p_ra22ao2) = 0. ddvel(i,j,p_ra22bo2) = 0. ddvel(i,j,p_ra25o2) = 0. ddvel(i,j,p_ch3so2) = 0. ddvel(i,j,p_dmso2 ) = 0. end do end do end if !----------------------------------------------------------- ! For cb05 !----------------------------------------------------------- ! ! For the additional CB05 species, assign similar RADM counter parts for ! now. Short lived species get a zero velocity since dry dep should be ! unimportant. **ALSO**, treat p_sulf as h2so4 vapor, not aerosol sulfate ! if ( (config_flags%chem_opt == CB05_SORG_AQ_KPP) ) then do j=jts,jte do i=its,ite ddvel(i,j,p_sulf) = ddvel(i,j,p_hno3) ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3) ddvel(i,j,p_meo2) = 0. ddvel(i,j,p_meoh) = ddvel(i,j,p_form) ddvel(i,j,p_etoh) = ddvel(i,j,p_form) ddvel(i,j,p_to2) = 0. ddvel(i,j,p_cro) = 0. ddvel(i,j,p_open) = ddvel(i,j,p_xyl) ddvel(i,j,p_c2o3) = 0. ddvel(i,j,p_xo2n) = 0. ddvel(i,j,p_xo2) = 0. ddvel(i,j,p_ispd) = 0. ddvel(i,j,p_o1d) = 0. ddvel(i,j,p_o) = 0. ddvel(i,j,p_terp) = ddvel(i,j,p_isop) ddvel(i,j,p_terpaer) = ddvel(i,j,p_isop) ddvel(i,j,p_hum) = ddvel(i,j,p_isop) ddvel(i,j,p_humaer) = ddvel(i,j,p_isop) ddvel(i,j,p_lim) = ddvel(i,j,p_isop) ddvel(i,j,p_limaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_limaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_oci) = ddvel(i,j,p_isop) ddvel(i,j,p_ociaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_ociaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_apin) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer3) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer4) = ddvel(i,j,p_isop) ddvel(i,j,p_bpin) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer3) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer4) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer5) = ddvel(i,j,p_isop) ddvel(i,j,p_ter) = ddvel(i,j,p_isop) ddvel(i,j,p_teraer1) = ddvel(i,j,p_isop) ddvel(i,j,p_teraer2) = ddvel(i,j,p_isop) ddvel(i,j,p_tolaer1) = ddvel(i,j,p_tol) ddvel(i,j,p_tolaer2) = ddvel(i,j,p_tol) ddvel(i,j,p_cslaer) = ddvel(i,j,p_cres) ddvel(i,j,p_xylaer1) = ddvel(i,j,p_xyl) ddvel(i,j,p_xylaer2) = ddvel(i,j,p_xyl) ddvel(i,j,p_isoaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_isoaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_sulaer) = ddvel(i,j,p_hno3) ddvel(i,j,p_panx) = ddvel(i,j,p_pan) ddvel(i,j,p_hco3) = 0. ddvel(i,j,p_ror) = 0. ddvel(i,j,p_alkh) = ddvel(i,j,p_par) ddvel(i,j,p_alkhaer1) = ddvel(i,j,p_par) ddvel(i,j,p_pah) = 0. ddvel(i,j,p_pahaer1) = 0. ddvel(i,j,p_pahaer2) = 0. ddvel(i,j,p_cl2) = 0. ddvel(i,j,p_cl) = 0. ddvel(i,j,p_hocl) = 0. ddvel(i,j,p_clo) = 0. ddvel(i,j,p_fmcl) = 0. if (ivgtyp(i,j).eq.iswater_temp) then ddvel(i,j,p_hg0) = 0.00e-2 else ddvel(i,j,p_hg0) = 0.01e-2 end if ddvel(i,j,p_hg2) = 0.50e-2 end do end do else if ( (config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP) ) then do j=jts,jte do i=its,ite ddvel(i,j,p_sulf) = ddvel(i,j,p_hno3) ddvel(i,j,p_hcl) = ddvel(i,j,p_hno3) ddvel(i,j,p_meo2) = 0. ddvel(i,j,p_meoh) = ddvel(i,j,p_form) ddvel(i,j,p_etoh) = ddvel(i,j,p_form) ddvel(i,j,p_to2) = 0. ddvel(i,j,p_cro) = 0. ddvel(i,j,p_open) = ddvel(i,j,p_xyl) ddvel(i,j,p_c2o3) = 0. ddvel(i,j,p_xo2n) = 0. ddvel(i,j,p_xo2) = 0. ddvel(i,j,p_ispd) = 0. ddvel(i,j,p_o1d) = 0. ddvel(i,j,p_o) = 0. ddvel(i,j,p_terp) = ddvel(i,j,p_isop) ddvel(i,j,p_terpaer) = ddvel(i,j,p_isop) ddvel(i,j,p_hum) = ddvel(i,j,p_isop) ddvel(i,j,p_humaer) = ddvel(i,j,p_isop) ddvel(i,j,p_lim) = ddvel(i,j,p_isop) ddvel(i,j,p_limaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_limaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_oci) = ddvel(i,j,p_isop) ddvel(i,j,p_ociaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_ociaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_apin) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer3) = ddvel(i,j,p_isop) ddvel(i,j,p_apinaer4) = ddvel(i,j,p_isop) ddvel(i,j,p_bpin) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer3) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer4) = ddvel(i,j,p_isop) ddvel(i,j,p_bpinaer5) = ddvel(i,j,p_isop) ddvel(i,j,p_ter) = ddvel(i,j,p_isop) ddvel(i,j,p_teraer1) = ddvel(i,j,p_isop) ddvel(i,j,p_teraer2) = ddvel(i,j,p_isop) ddvel(i,j,p_tolaer1) = ddvel(i,j,p_tol) ddvel(i,j,p_tolaer2) = ddvel(i,j,p_tol) ddvel(i,j,p_cslaer) = ddvel(i,j,p_cres) ddvel(i,j,p_xylaer1) = ddvel(i,j,p_xyl) ddvel(i,j,p_xylaer2) = ddvel(i,j,p_xyl) ddvel(i,j,p_isoaer1) = ddvel(i,j,p_isop) ddvel(i,j,p_isoaer2) = ddvel(i,j,p_isop) ddvel(i,j,p_sulaer) = ddvel(i,j,p_hno3) ddvel(i,j,p_panx) = ddvel(i,j,p_pan) ddvel(i,j,p_hco3) = 0. ddvel(i,j,p_ror) = 0. ddvel(i,j,p_alkh) = ddvel(i,j,p_par) ddvel(i,j,p_alkhaer1) = ddvel(i,j,p_par) ddvel(i,j,p_pah) = 0. ddvel(i,j,p_pahaer1) = 0. ddvel(i,j,p_pahaer2) = 0. ddvel(i,j,p_cl2) = 0. ddvel(i,j,p_cl) = 0. ddvel(i,j,p_hocl) = 0. ddvel(i,j,p_clo) = 0. ddvel(i,j,p_fmcl) = 0. if (ivgtyp(i,j).eq.iswater_temp) then ddvel(i,j,p_hg0) = 0.00e-2 else ddvel(i,j,p_hg0) = 0.01e-2 end if ddvel(i,j,p_hg2) = 0.50e-2 ddvel(i,j,p_cvasoa1) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvasoa2) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvasoa3) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvasoa4) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa1) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa2) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa3) = ddvel(i,j,p_hno3) ddvel(i,j,p_cvbsoa4) = ddvel(i,j,p_hno3) end do end do end if END SUBROUTINE wesely_driver SUBROUTINE rc( rcx, t, rad, rh, iland, & iseason, numgas, wetflag, rainflag, highnh3, & iprt, spec_hum, p_srf, chem_opt, chm_is_moz ) !---------------------------------------------------------------------- ! THIS SUBROUTINE CALCULATES SURFACE RESISTENCES ACCORDING ! TO THE MODEL OF ! M. L. WESELY, ! ATMOSPHERIC ENVIRONMENT 23 (1989), 1293-1304 ! WITH SOME ADDITIONS ACCORDING TO ! J. W. ERISMAN, A. VAN PUL, AND P. WYERS, ! ATMOSPHERIC ENVIRONMENT 28 (1994), 2595-2607 ! WRITTEN BY WINFRIED SEIDL, APRIL 1997 ! MODYFIED BY WINFRIED SEIDL, MARCH 2000 ! FOR MM5 VERSION 3 !---------------------------------------------------------------------- USE module_state_description !---------------------------------------------------------------------- ! ... dummy arguments !---------------------------------------------------------------------- INTEGER, intent(in) :: iland, iseason, numgas INTEGER, intent(in) :: iprt INTEGER, intent(in) :: chem_opt REAL, intent(in) :: rad, rh REAL, intent(in) :: t ! surface temp (K) REAL, intent(in) :: p_srf ! surface pressure (Pa) REAL, intent(in) :: spec_hum ! surface specific humidity (kg/kg) real, intent(out) :: rcx(numgas) LOGICAL, intent(in) :: highnh3, rainflag, wetflag LOGICAL, intent(in) :: chm_is_moz !---------------------------------------------------------------------- ! .. Local Scalars .. !---------------------------------------------------------------------- REAL, parameter :: t0 = 298. REAL, parameter :: tmelt = 273.16 INTEGER :: lt, n REAL :: rclx, rdc, resice, rgsx, rluo1, rluo2 REAL :: rlux, rmx, rs, rsmx, rdtheta, z, wrk REAL :: qs, es, ws, dewm, dv_pan, drat REAL :: crs, tc REAL :: rs_pan, tc_pan LOGICAL :: has_dew !---------------------------------------------------------------------- ! .. Local Arrays .. !---------------------------------------------------------------------- REAL :: hstary(numgas) !---------------------------------------------------------------------- ! .. Intrinsic Functions .. !---------------------------------------------------------------------- INTRINSIC exp rcx(1:numgas) = 1. tc = t - 273.15 rdtheta = 0. z = 200./(rad+0.1) !!! HARDWIRE VALUES FOR TESTING ! z=0.4727409 ! tc=22.76083 ! t=tc+273.15 ! rad = 412.8426 ! rainflag=.false. ! wetflag=.false. IF ( tc<=0. .OR. tc>=40. ) THEN rs = 9999. ELSE rs = ri(iland,iseason)*(1+z*z)*(400./(tc*(40.-tc))) END IF rdc = 100.*(1. + 1000./(rad + 10.))/(1. + 1000.*rdtheta) rluo1 = 1./(1./3000. + 3./rlu(iland,iseason)) rluo2 = 1./(1./1000. + 3./rlu(iland,iseason)) resice = 1000.*exp( -(tc + 4.) ) wrk = (t0 - t)/(t0*t) DO n = 1, numgas IF( hstar(n) /= 0. ) then hstary(n) = hstar(n)*exp( dhr(n)*wrk ) !---------------------------------------------------------------------- ! SPECIAL TREATMENT FOR HNO3, HNO4, H2O2, PAA !---------------------------------------------------------------------- is_mozart : if( chm_is_moz ) then if( n == p_hno3 ) then hstary(n) = 2.6e6*exp( 8700.*wrk )*1.e5 else if( n == p_hno4 ) then hstary(n) = 32.e5 else if( n == p_h2o2 ) then hstary(n) = hstary(n)*(1. + 2.2e-12*exp( -3730.*wrk )*1.e5) else if( n == p_paa ) then hstary(n) = hstary(n)*(1. + 1.8e-4*exp( -1510.*wrk )*1.e5) end if endif is_mozart rmx = 1./(hstary(n)/3000. + 100.*f0(n)) rsmx = rs*dratio(n) + rmx if( iseason /= 4 .and. p_pan >= param_first_scalar .and. chm_is_moz ) then if( iland /= iswater_temp .and. n == p_pan ) then !------------------------------------------------------------------------------------- ! saturation vapor pressure (Pascals) ! saturation mixing ratio ! saturation specific humidity !------------------------------------------------------------------------------------- es = 611.*exp( 5414.77*(t - tmelt)/(tmelt*t) ) ws = .622*es/(p_srf - es) qs = ws/(1. + ws) has_dew = .false. if( qs <= spec_hum ) then has_dew = .true. end if if( t < tmelt ) then has_dew = .false. end if if( has_dew .or. rainflag ) then dewm = 3. else dewm = 1. endif drat = wpan/wh2o tc_pan = t - tmelt if( t > tmelt .and. t < 313.15 ) then crs = (1. + (200./(rad + .1))**2) * (400./(tc_pan*(40. - tc_pan))) else crs = large_value end if lt = wrf2mz_lt_map(iland) rs_pan = ri_pan(iseason,lt)*crs dv_pan = c0_pan(lt) * (1. - exp( -k_pan(lt)*(dewm*rs_pan*drat)*1.e-2 )) if( dv_pan > 0. ) then rsmx = 1./dv_pan end if endif endif rclx = 1./(1.e-5*hstary(n)/rcls(iland,iseason) & + f0(n)/rclo(iland,iseason)) + resice rgsx = 1./(1.e-5*hstary(n)/rgss(iland,iseason) & + f0(n)/rgso(iland,iseason)) + resice rlux = rlu(iland,iseason)/(1.e-5*hstary(n) + f0(n)) + resice IF( wetflag ) THEN rlux = 1./(1./(3.*rlu(iland,iseason)) + 1.e-7*hstary(n) + f0(n)/rluo1) END IF IF( rainflag ) THEN rlux = 1./(1./(3.*rlu(iland,iseason)) + 1.e-7*hstary(n) + f0(n)/rluo2) END IF rcx(n) = 1./(1./rsmx + 1./rlux + 1./(rdc + rclx) + 1./(rac(iland,iseason) + rgsx)) rcx(n) = max( 1.,rcx(n) ) end IF END DO !-------------------------------------------------- ! SPECIAL TREATMENT FOR OZONE !-------------------------------------------------- if(p_o3 >= param_first_scalar)then hstary(p_o3) = hstar(p_o3)*exp( dhr(p_o3)*(298. - t)/(298.*t) ) rmx = 1./(hstary(p_o3)/3000.+100.*f0(p_o3)) rsmx = rs*dratio(p_o3) + rmx rlux = rlu(iland,iseason)/(1.E-5*hstary(p_o3)+f0(p_o3)) + resice rclx = rclo(iland,iseason) + resice rgsx = rgso(iland,iseason) + resice IF (wetflag) rlux = rluo1 IF (rainflag) rlux = rluo2 rcx(p_o3) = 1. & /(1./rsmx+1./rlux+1./(rdc+rclx)+1./(min(100.,rac(iland,iseason))+rgsx)) rcx(p_o3) = max( 1.,rcx(p_o3) ) endif ! SPECIAL TREATMENT FOR SO2 (Wesely) ! HSTARY(P_SO2)=HSTAR(P_SO2)*EXP(DHR(P_SO2)*(1./T-1./298.)) ! RMX=1./(HSTARY(P_SO2)/3000.+100.*F0(P_SO2)) ! RSMX=RS*DRATIO(P_SO2)+RMX ! RLUX=RLU(ILAND,ISEASON)/(1.E-5*HSTARY(P_SO2)+F0(P_SO2)) ! & +RESICE ! RCLX=RCLS(ILAND,ISEASON)+RESICE ! RGSX=RGSS(ILAND,ISEASON)+RESICE ! IF ((wetflag).OR.(RAINFLAG)) THEN ! IF (ILAND.EQ.1) THEN ! RLUX=50. ! ELSE ! RLUX=100. ! END IF ! END IF ! RCX(P_SO2)=1./(1./RSMX+1./RLUX+1./(RDC+RCLX) ! & +1./(RAC(ILAND,ISEASON)+RGSX)) ! IF (RCX(P_SO2).LT.1.) RCX(P_SO2)=1. !-------------------------------------------------- ! SO2 according to Erisman et al. 1994 ! R_STOM !-------------------------------------------------- is_so2 : & if( p_so2 >= param_first_scalar ) then rsmx = rs*dratio(p_so2) !-------------------------------------------------- ! R_EXT !-------------------------------------------------- IF (tc> -1. ) THEN IF (rh<81.3) THEN rlux = 25000.*exp(-0.0693*rh) ELSE rlux = 0.58E12*exp(-0.278*rh) END IF END IF IF (((wetflag) .OR. (rainflag)) .AND. (tc> -1. )) THEN rlux = 1. END IF IF ((tc>= -5. ) .AND. (tc<= -1. )) THEN rlux = 200. END IF IF (tc< -5. ) THEN rlux = 500. END IF !-------------------------------------------------- ! INSTEAD OF R_INC R_CL and R_DC of Wesely are used !-------------------------------------------------- rclx = rcls(iland,iseason) !-------------------------------------------------- ! DRY SURFACE !-------------------------------------------------- rgsx = 1000. !-------------------------------------------------- ! WET SURFACE !-------------------------------------------------- IF ((wetflag) .OR. (rainflag)) THEN IF (highnh3) THEN rgsx = 0. ELSE rgsx = 500. END IF END IF !-------------------------------------------------- ! WATER !-------------------------------------------------- IF (iland==iswater_temp) THEN rgsx = 0. END IF !-------------------------------------------------- ! SNOW !-------------------------------------------------- IF( iseason==4 .OR. iland==isice_temp ) THEN IF( tc > 2. ) THEN rgsx = 0. else IF ( tc >= -1. .AND. tc <= 2. ) THEN rgsx = 70.*(2. - tc) else IF ( tc < -1. ) THEN rgsx = 500. END IF END IF !-------------------------------------------------- ! TOTAL SURFACE RESISTENCE !-------------------------------------------------- IF ((iseason/=4) .AND. (ixxxlu(iland)/=1) .AND. (iland/=iswater_temp) .AND. & (iland/=isice_temp)) THEN rcx(p_so2) = 1./(1./rsmx+1./rlux+1./(rclx+rdc+rgsx)) ELSE rcx(p_so2) = rgsx END IF rcx(p_so2) = max( 1.,rcx(p_so2) ) end if is_so2 !-------------------------------------------------- ! NH3 according to Erisman et al. 1994 ! R_STOM !-------------------------------------------------- is_nh3: if( p_nh3 >= param_first_scalar ) then rsmx = rs*dratio(p_nh3) !-------------------------------------------------- ! GRASSLAND (PASTURE DURING GRAZING) !-------------------------------------------------- IF (ixxxlu(iland)==3) THEN IF (iseason==1) THEN !-------------------------------------------------- ! SUMMER !-------------------------------------------------- rcx(p_nh3) = 1000. END IF IF ((iseason==2) .OR. (iseason==3) .OR. (iseason==5)) THEN !-------------------------------------------------- ! WINTER, NO SNOW !-------------------------------------------------- IF (tc>-1.) THEN IF (rad/=0.) THEN rcx(p_nh3) = 50. ELSE rcx(p_nh3) = 100. END IF IF ((wetflag) .OR. (rainflag)) THEN rcx(p_nh3) = 20. END IF END IF IF ((tc>=(-5.)) .AND. (tc<=-1.)) THEN rcx(p_nh3) = 200. END IF IF (tc<(-5.)) THEN rcx(p_nh3) = 500. END IF END IF END IF !-------------------------------------------------- ! AGRICULTURAL LAND (CROPS AND UNGRAZED PASTURE) !-------------------------------------------------- IF (ixxxlu(iland)==2) THEN IF (iseason==1) THEN !-------------------------------------------------- ! SUMMER !-------------------------------------------------- IF (rad/=0.) THEN rcx(p_nh3) = rsmx ELSE rcx(p_nh3) = 200. END IF IF ((wetflag) .OR. (rainflag)) THEN rcx(p_nh3) = 50. END IF END IF IF ((iseason==2) .OR. (iseason==3) .OR. (iseason==5)) THEN !-------------------------------------------------- ! WINTER, NO SNOW !-------------------------------------------------- IF (tc>-1.) THEN IF (rad/=0.) THEN rcx(p_nh3) = rsmx ELSE rcx(p_nh3) = 300. END IF IF ((wetflag) .OR. (rainflag)) THEN rcx(p_nh3) = 100. END IF END IF IF ((tc>=(-5.)) .AND. (tc<=-1.)) THEN rcx(p_nh3) = 200. END IF IF (tc<(-5.)) THEN rcx(p_nh3) = 500. END IF END IF END IF !-------------------------------------------------- ! SEMI-NATURAL ECOSYSTEMS AND FORESTS !-------------------------------------------------- IF ((ixxxlu(iland)==4) .OR. (ixxxlu(iland)==5) .OR. (ixxxlu( & iland)==6)) THEN IF (rad/=0.) THEN rcx(p_nh3) = 500. ELSE rcx(p_nh3) = 1000. END IF IF ((wetflag) .OR. (rainflag)) THEN IF (highnh3) THEN rcx(p_nh3) = 100. ELSE rcx(p_nh3) = 0. END IF END IF IF ((iseason==2) .OR. (iseason==3) .OR. (iseason==5)) THEN !-------------------------------------------------- ! WINTER, NO SNOW !-------------------------------------------------- IF ((tc>=(-5.)) .AND. (tc<=-1.)) THEN rcx(p_nh3) = 200. END IF IF (tc<(-5.)) THEN rcx(p_nh3) = 500. END IF END IF END IF !-------------------------------------------------- ! WATER !-------------------------------------------------- IF (iland==iswater_temp) THEN rcx(p_nh3) = 0. END IF !-------------------------------------------------- ! URBAN AND DESERT (SOIL SURFACES) !-------------------------------------------------- IF (ixxxlu(iland)==1) THEN IF ( .NOT. wetflag) THEN rcx(p_nh3) = 50. ELSE rcx(p_nh3) = 0. END IF END IF !-------------------------------------------------- ! SNOW COVERED SURFACES OR PERMANENT ICE !-------------------------------------------------- IF ((iseason==4) .OR. (iland==isice_temp)) THEN IF (tc>2.) THEN rcx(p_nh3) = 0. END IF IF ((tc>=(-1.)) .AND. (tc<=2.)) THEN rcx(p_nh3) = 70.*(2.-tc) END IF IF (tc<(-1.)) THEN rcx(p_nh3) = 500. END IF END IF rcx(p_nh3) = max( 1.,rcx(p_nh3) ) endif is_nh3 END SUBROUTINE rc SUBROUTINE deppart( rmol, ustar, rh, clw, iland, & dvpart, dvfog ) !-------------------------------------------------- ! THIS SUBROUTINE CALCULATES SURFACE DEPOSITION VELOCITIES ! FOR FINE AEROSOL PARTICLES ACCORDING TO THE MODEL OF ! J. W. ERISMAN, A. VAN PUL, AND P. WYERS, ! ATMOSPHERIC ENVIRONMENT 28 (1994), 2595-2607 ! WRITTEN BY WINFRIED SEIDL, APRIL 1997 ! MODIFIED BY WINFRIED SEIDL, MARCH 2000 ! FOR MM5 VERSION 3 !-------------------------------------------------- !-------------------------------------------------- ! .. Scalar Arguments .. !-------------------------------------------------- INTEGER, intent(in) :: iland REAL, intent(in) :: clw, rh, rmol, ustar REAL, intent(out) :: dvfog, dvpart !-------------------------------------------------- ! .. Intrinsic Functions .. !-------------------------------------------------- INTRINSIC exp dvpart = ustar/kpart(iland) IF (rmol<0.) THEN !-------------------------------------------------- ! UNSTABLE LAYERING CORRECTION !-------------------------------------------------- dvpart = dvpart*(1.+(-300.*rmol)**0.66667) END IF IF (rh>80.) THEN !-------------------------------------------------- ! HIGH RELATIVE HUMIDITY CORRECTION ! ACCORDING TO J. W. ERISMAN ET AL. ! ATMOSPHERIC ENVIRONMENT 31 (1997), 321-332 !-------------------------------------------------- dvpart = dvpart*(1.+0.37*exp((rh-80.)/20.)) END IF !-------------------------------------------------- ! SEDIMENTATION VELOCITY OF FOG WATER ACCORDING TO ! R. FORKEL, W. SEIDL, R. DLUGI AND E. DEIGELE ! J. GEOPHYS. RES. 95D (1990), 18501-18515 !-------------------------------------------------- dvfog = 0.06*clw IF (ixxxlu(iland)==5) THEN !-------------------------------------------------- ! TURBULENT DEPOSITION OF FOG WATER IN CONIFEROUS FOREST ACCORDI ! A. T. VERMEULEN ET AL. ! ATMOSPHERIC ENVIRONMENT 31 (1997), 375-386 !-------------------------------------------------- dvfog = dvfog + 0.195*ustar*ustar END IF END SUBROUTINE deppart SUBROUTINE landusevg( vgs, ustar, rmol, z0, zz, & dvparx, iland, numgas, srfres, aer_res_def, & aer_res_zcen, p_sulf ) !-------------------------------------------------- ! This subroutine calculates the species specific deposition velocit ! as a function of the local meteorology and land use. The depositi ! Velocity is also landuse specific. ! Reference: Hsieh, C.M., Wesely, M.L. and Walcek, C.J. (1986) ! A Dry Deposition Module for Regional Acid Deposition ! EPA report under agreement DW89930060-01 ! Revised version by Darrell Winner (January 1991) ! Environmental Engineering Science 138-78 ! California Institute of Technology ! Pasadena, CA 91125 ! Modified by Winfried Seidl (August 1997) ! Fraunhofer-Institut fuer Atmosphaerische Umweltforschung ! Garmisch-Partenkirchen, D-82467 ! for use of Wesely and Erisman surface resistances ! Inputs: ! Ustar : The grid average friction velocity (m/s) ! Rmol : Reciprocal of the Monin-Obukhov length (1/m) ! Z0 : Surface roughness height for the grid square (m) ! SrfRes : Array of landuse/atmospheric/species resistances (s/m) ! Slist : Array of chemical species codes ! Dvparx : Array of surface deposition velocity of fine aerosol p ! Outputs: ! Vgs : Array of species and landuse specific deposition ! velocities (m/s) ! Vg : Cell-average deposition velocity by species (m/s) ! Variables used: ! SCPR23 : (Schmidt #/Prandtl #)**(2/3) Diffusion correction fac ! Zr : Reference Height (m) ! Iatmo : Parameter specifying the stabilty class (Function of ! Z0 : Surface roughness height (m) ! karman : Von Karman constant (from module_model_constants) !-------------------------------------------------- USE module_model_constants, only: karman !-------------------------------------------------- ! .. Scalar Arguments .. !-------------------------------------------------- INTEGER, intent(in) :: iland, numgas, p_sulf REAL, intent(in) :: dvparx, ustar, z0, zz REAL, intent(inout) :: rmol REAL, intent(inout) :: aer_res_def REAL, intent(inout) :: aer_res_zcen !-------------------------------------------------- ! .. Array Arguments .. !-------------------------------------------------- REAL, intent(in) :: srfres(numgas) REAL, intent(out) :: vgs(numgas) !-------------------------------------------------- ! .. Local Scalars .. !-------------------------------------------------- INTEGER :: jspec REAL :: vgp, vgpart, zr REAL :: rmol_tmp !-------------------------------------------------- ! .. Local Arrays .. !-------------------------------------------------- REAL :: vgspec(numgas) !-------------------------------------------------- ! Calculate aerodynamic resistance for reference ! height = layer center !-------------------------------------------------- zr = zz*.5 rmol_tmp = rmol CALL depvel( numgas, rmol_tmp, zr, z0, ustar, & vgspec, vgpart, aer_res_zcen ) !-------------------------------------------------- ! Set the reference height (2.0 m) !-------------------------------------------------- ! zr = 10.0 zr = 2.0 !-------------------------------------------------- ! CALCULATE THE DEPOSITION VELOCITY without any surface ! resistance term, i.e. 1 / (ra + rb) !-------------------------------------------------- CALL depvel( numgas, rmol, zr, z0, ustar, & vgspec, vgpart, aer_res_def ) !-------------------------------------------------- ! Calculate the deposition velocity for each species ! and grid cell by looping through all the possibile combinations ! of the two !-------------------------------------------------- vgp = 1.0/((1.0/vgpart)+(1.0/dvparx)) !-------------------------------------------------- ! Loop through the various species !-------------------------------------------------- DO jspec = 1, numgas !-------------------------------------------------- ! Add in the surface resistance term, rc (SrfRes) !-------------------------------------------------- vgs(jspec) = 1.0/(1.0/vgspec(jspec) + srfres(jspec)) END DO vgs(p_sulf) = vgp CALL cellvg( vgs, ustar, zz, zr, rmol, numgas ) END SUBROUTINE landusevg SUBROUTINE cellvg( vgtemp, ustar, dz, zr, rmol, nspec ) !-------------------------------------------------- ! THIS PROGRAM HAS BEEN DESIGNED TO CALCULATE THE CELL AVERAGE ! DEPOSITION VELOCITY GIVEN THE VALUE OF VG AT SOME REFERENCE ! HEIGHT ZR WHICH IS MUCH SMALLER THAN THE CELL HEIGHT DZ. ! PROGRAM WRITTEN BY GREGORY J.MCRAE (NOVEMBER 1977) ! Modified by Darrell A. Winner (February 1991) !.....PROGRAM VARIABLES... ! VgTemp - DEPOSITION VELOCITY AT THE REFERENCE HEIGHT ! USTAR - FRICTION VELOCITY ! RMOL - RECIPROCAL OF THE MONIN-OBUKHOV LENGTH ! ZR - REFERENCE HEIGHT ! DZ - CELL HEIGHT ! CELLVG - CELL AVERAGE DEPOSITION VELOCITY ! VK - VON KARMAN CONSTANT !-------------------------------------------------- USE module_model_constants, only: karman !-------------------------------------------------- ! .. Scalar Arguments .. !-------------------------------------------------- INTEGER, intent(in) :: nspec REAL, intent(in) :: dz, rmol, ustar, zr !-------------------------------------------------- ! .. Array Arguments .. !-------------------------------------------------- REAL, intent(out) :: vgtemp(nspec) !-------------------------------------------------- ! .. Local Scalars .. !-------------------------------------------------- INTEGER :: nss REAL :: a, fac, pdz, pzr, vk !-------------------------------------------------- ! .. Intrinsic Functions .. !-------------------------------------------------- INTRINSIC alog, sqrt !-------------------------------------------------- ! Set the von Karman constant !-------------------------------------------------- vk = karman !-------------------------------------------------- ! DETERMINE THE STABILITY BASED ON THE CONDITIONS ! 1/L < 0 UNSTABLE ! 1/L = 0 NEUTRAL ! 1/L > 0 STABLE !-------------------------------------------------- DO nss = 1, nspec IF (rmol < 0.) THEN pdz = sqrt(1.0 - 9.0*dz*rmol) pzr = sqrt(1.0 - 9.0*zr*rmol) fac = ((pdz - 1.0)/(pzr - 1.0))*((pzr + 1.0)/(pdz + 1.0)) a = 0.74*dz*alog(fac) + (0.164/rmol)*(pdz-pzr) ELSE IF (rmol == 0.) THEN a = 0.74*(dz*alog(dz/zr) - dz + zr) ELSE a = 0.74*(dz*alog(dz/zr) - dz + zr) + (2.35*rmol)*(dz - zr)**2 END IF !-------------------------------------------------- ! CALCULATE THE DEPOSITION VELOCITIY !-------------------------------------------------- vgtemp(nss) = vgtemp(nss)/(1.0 + vgtemp(nss)*a/(vk*ustar*(dz - zr))) END DO END SUBROUTINE cellvg SUBROUTINE depvel( numgas, rmol, zr, z0, ustar, & depv, vgpart, aer_res ) !-------------------------------------------------- ! THIS FUNCTION HAS BEEN DESIGNED TO EVALUATE AN UPPER LIMIT ! FOR THE POLLUTANT DEPOSITION VELOCITY AS A FUNCTION OF THE ! SURFACE ROUGHNESS AND METEOROLOGICAL CONDITIONS. ! PROGRAM WRITTEN BY GREGORY J.MCRAE (NOVEMBER 1977) ! Modified by Darrell A. Winner (Feb. 1991) ! by Winfried Seidl (Aug. 1997) !.....PROGRAM VARIABLES... ! RMOL - RECIPROCAL OF THE MONIN-OBUKHOV LENGTH ! ZR - REFERENCE HEIGHT ! Z0 - SURFACE ROUGHNESS HEIGHT ! SCPR23 - (Schmidt #/Prandtl #)**(2/3) Diffusion correction fact ! UBAR - ABSOLUTE VALUE OF SURFACE WIND SPEED ! DEPVEL - POLLUTANT DEPOSITION VELOCITY ! Vk - VON KARMAN CONSTANT ! USTAR - FRICTION VELOCITY U* ! POLINT - POLLUTANT INTEGRAL ! AER_RES - AERODYNAMIC RESISTANCE !.....REFERENCES... ! MCRAE, G.J. ET AL. (1983) MATHEMATICAL MODELING OF PHOTOCHEMICAL ! AIR POLLUTION, ENVIRONMENTAL QUALITY LABORATORY REPORT 18, ! CALIFORNIA INSTITUTE OF TECHNOLOGY, PASADENA, CALIFORNIA. !.....RESTRICTIONS... ! 1. THE MODEL EDDY DIFFUSIVITIES ARE BASED ON MONIN-OBUKHOV ! SIMILARITY THEORY AND SO ARE ONLY APPLICABLE IN THE ! SURFACE LAYER, A HEIGHT OF O(30M). ! 2. ALL INPUT UNITS MUST BE CONSISTENT ! 3. THE PHI FUNCTIONS USED TO CALCULATE THE FRICTION ! VELOCITY U* AND THE POLLUTANT INTEGRALS ARE BASED ! ON THE WORK OF BUSINGER ET AL.(1971). ! 4. THE MOMENTUM AND POLLUTANT DIFFUSIVITIES ARE NOT ! THE SAME FOR THE CASES L<0 AND L>0. !-------------------------------------------------- USE module_model_constants, only: karman !-------------------------------------------------- ! .. Scalar Arguments .. !-------------------------------------------------- INTEGER, intent(in) :: numgas REAL, intent(in) :: ustar, z0, zr REAL, intent(out) :: vgpart, aer_res REAL, intent(inout) :: rmol !-------------------------------------------------- ! .. Array Arguments .. !-------------------------------------------------- REAL, intent(out) :: depv(numgas) !-------------------------------------------------- ! .. Local Scalars .. !-------------------------------------------------- INTEGER :: l REAL :: ao, ar, polint, vk !-------------------------------------------------- ! .. Intrinsic Functions .. !-------------------------------------------------- INTRINSIC alog !-------------------------------------------------- ! Set the von Karman constant !-------------------------------------------------- vk = karman !-------------------------------------------------- ! Calculate the diffusion correction factor ! SCPR23 is calculated as (Sc/Pr)**(2/3) using Sc= 1.15 and Pr= 1.0 ! SCPR23 = 1.10 !-------------------------------------------------- ! DETERMINE THE STABILITY BASED ON THE CONDITIONS ! 1/L < 0 UNSTABLE ! 1/L = 0 NEUTRAL ! 1/L > 0 STABLE !-------------------------------------------------- if(abs(rmol) < 1.E-6 ) rmol = 0. IF (rmol<0) THEN ar = ((1.0-9.0*zr*rmol)**(0.25)+0.001)**2 ao = ((1.0-9.0*z0*rmol)**(0.25)+0.001)**2 polint = 0.74*(alog((ar-1.0)/(ar+1.0))-alog((ao-1.0)/(ao+1.0))) ELSE IF (rmol==0.) THEN polint = 0.74*alog(zr/z0) ELSE polint = 0.74*alog(zr/z0) + 4.7*rmol*(zr-z0) END IF !-------------------------------------------------- ! CALCULATE THE Maximum DEPOSITION VELOCITY !-------------------------------------------------- DO l = 1, numgas depv(l) = ustar*vk/(2.0*scpr23(l)+polint) END DO vgpart = ustar*vk/polint aer_res = polint/(karman*max(ustar,1.0e-4)) END SUBROUTINE depvel SUBROUTINE dep_init( id, config_flags, numgas, mminlu_loc, & ips, ipe, jps, jpe, ide, jde ) !-- !-------------------------------------------------- ! .. Initialize simple deposition velocity routine !-------------------------------------------------- USE module_model_constants USE module_configure USE module_state_description TYPE (grid_config_rec_type) , INTENT (in) :: config_flags character(len=*), intent(in) :: mminlu_loc !-- !-------------------------------------------------- ! .. Scalar Arguments .. !-------------------------------------------------- integer, intent(in) :: id, numgas integer, intent(in) :: ips, ipe, jps, jpe integer, intent(in) :: ide, jde !-------------------------------------------------- ! .. Local Scalars !-------------------------------------------------- INTEGER :: iland, iseason, l, m integer :: iprt integer :: astat integer :: ncid integer :: dimid integer :: varid integer :: max_dom integer :: cpos, slen integer :: lon_e, lat_e integer :: iend, jend integer, allocatable :: input_wes_seasonal(:,:,:,:) REAL :: sc character(len=128) :: err_msg character(len=128) :: filename character(len=3) :: id_num LOGICAL :: chm_is_moz !-------------------------------------------------- ! .. Local Arrays !-------------------------------------------------- REAL :: dat1(nlu,dep_seasons), dat2(nlu,dep_seasons), & dat3(nlu,dep_seasons), dat4(nlu,dep_seasons), & dat5(nlu,dep_seasons), dat6(nlu,dep_seasons), & dat7(nlu,dep_seasons), dvj(numgas) #ifdef NETCDF LOGICAL , EXTERNAL :: wrf_dm_on_monitor #define DM_BCAST_MACRO(A) CALL wrf_dm_bcast_bytes ( A , size ( A ) * IWORDSIZE ) include 'netcdf.inc' #else if( config_flags%chem_opt == MOZART_KPP .or. & config_flags%chem_opt == MOZCART_KPP .or. & config_flags%chem_opt == T1_MOZCART_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then call wrf_message( 'dep_init: mozart,mozcart chem option requires netcdf' ) call wrf_abort end if #endif !-------------------------------------------------- ! .. Make sure that the model is being run with a soil model. Otherwise, ! iland will be zero in deppart, which will try to pull non-exisant ! array locations. !-------------------------------------------------- call nl_get_sf_surface_physics(id,l) if( l == 0 ) & call wrf_error_fatal("ERROR: Cannot use dry deposition without using a soil model.") ! .. ! .. Data Statements .. ! RI for stomatal resistance ! data ((ri(ILAND,ISEASON),ILAND=1,nlu),ISEASON=1,dep_seasons)/0.10E+11, & DATA ((dat1(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, & 0.60E+02, 0.60E+02, 0.60E+02, 0.60E+02, 0.70E+02, 0.12E+03, & 0.12E+03, 0.12E+03, 0.12E+03, 0.70E+02, 0.13E+03, 0.70E+02, & 0.13E+03, 0.10E+03, 0.10E+11, 0.80E+02, 0.10E+03, 0.10E+11, & 0.80E+02, 0.10E+03, 0.10E+03, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.12E+03, 0.10E+11, 0.10E+11, & 0.70E+02, 0.25E+03, 0.50E+03, 0.10E+11, 0.10E+11, 0.50E+03, & 0.10E+11, 0.10E+11, 0.50E+03, 0.50E+03, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.12E+03, 0.10E+11, & 0.10E+11, 0.70E+02, 0.25E+03, 0.50E+03, 0.10E+11, 0.10E+11, & 0.50E+03, 0.10E+11, 0.10E+11, 0.50E+03, 0.50E+03, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.70E+02, 0.40E+03, 0.80E+03, 0.10E+11, & 0.10E+11, 0.80E+03, 0.10E+11, 0.10E+11, 0.80E+03, 0.80E+03, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.12E+03, 0.12E+03, & 0.12E+03, 0.12E+03, 0.14E+03, 0.24E+03, 0.24E+03, 0.24E+03, & 0.12E+03, 0.14E+03, 0.25E+03, 0.70E+02, 0.25E+03, 0.19E+03, & 0.10E+11, 0.16E+03, 0.19E+03, 0.10E+11, 0.16E+03, 0.19E+03, & 0.19E+03, 0.10E+11, 0.10E+11, 0.10E+11/ ! .. IF (nlu/=25) THEN call wrf_debug(0, 'number of land use classifications not correct ') CALL wrf_error_fatal ( "LAND USE CLASSIFICATIONS NOT 25") END IF IF (dep_seasons/=5) THEN call wrf_debug(0, 'number of dep_seasons not correct ') CALL wrf_error_fatal ( "DEP_SEASONS NOT 5") END IF ! SURFACE RESISTANCE DATA FOR DEPOSITION MODEL OF ! M. L. WESELY, ATMOSPHERIC ENVIRONMENT 23 (1989) 1293-1304 ! Seasonal categories: ! 1: midsummer with lush vegetation ! 2: autumn with unharvested cropland ! 3: late autumn with frost, no snow ! 4: winter, snow on ground and subfreezing ! 5: transitional spring with partially green short annuals ! Land use types: ! USGS type Wesely type ! 1: Urban and built-up land 1 ! 2: Dryland cropland and pasture 2 ! 3: Irrigated cropland and pasture 2 ! 4: Mix. dry/irrg. cropland and pasture 2 ! 5: Cropland/grassland mosaic 2 ! 6: Cropland/woodland mosaic 4 ! 7: Grassland 3 ! 8: Shrubland 3 ! 9: Mixed shrubland/grassland 3 ! 10: Savanna 3, always summer ! 11: Deciduous broadleaf forest 4 ! 12: Deciduous needleleaf forest 5, autumn and winter modi ! 13: Evergreen broadleaf forest 4, always summer ! 14: Evergreen needleleaf forest 5 ! 15: Mixed Forest 6 ! 16: Water Bodies 7 ! 17: Herbaceous wetland 9 ! 18: Wooded wetland 6 ! 19: Barren or sparsely vegetated 8 ! 20: Herbaceous Tundra 9 ! 21: Wooded Tundra 6 ! 22: Mixed Tundra 6 ! 23: Bare Ground Tundra 8 ! 24: Snow or Ice -, always winter ! 25: No data 8 ! Order of data: ! | ! | seasonal category ! \|/ ! ---> landuse type ! 1 2 3 4 5 6 7 8 9 ! RLU for outer surfaces in the upper canopy DO iseason = 1, dep_seasons ri(1:nlu,iseason) = dat1(1:nlu,iseason) END DO ! data ((rlu(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+11, & DATA ((dat2(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, & 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, & 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, & 0.20E+04, 0.20E+04, 0.10E+11, 0.25E+04, 0.20E+04, 0.10E+11, & 0.25E+04, 0.20E+04, 0.20E+04, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, & 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, 0.90E+04, & 0.20E+04, 0.40E+04, 0.80E+04, 0.10E+11, 0.90E+04, 0.80E+04, & 0.10E+11, 0.90E+04, 0.80E+04, 0.80E+04, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, & 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, & 0.90E+04, 0.20E+04, 0.40E+04, 0.80E+04, 0.10E+11, 0.90E+04, & 0.80E+04, 0.10E+11, 0.90E+04, 0.80E+04, 0.80E+04, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.20E+04, 0.60E+04, 0.90E+04, 0.10E+11, & 0.90E+04, 0.90E+04, 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.40E+04, 0.40E+04, & 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, & 0.20E+04, 0.40E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.30E+04, & 0.10E+11, 0.40E+04, 0.30E+04, 0.10E+11, 0.40E+04, 0.30E+04, & 0.30E+04, 0.10E+11, 0.10E+11, 0.10E+11/ DO iseason = 1, dep_seasons rlu(1:nlu,iseason) = dat2(1:nlu,iseason) END DO ! RAC for transfer that depends on canopy height and density ! data ((rac(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+03, & DATA ((dat3(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+03, & 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+04, 0.10E+03, & 0.10E+03, 0.10E+03, 0.10E+03, 0.20E+04, 0.20E+04, 0.20E+04, & 0.20E+04, 0.20E+04, 0.00E+00, 0.30E+03, 0.20E+04, 0.00E+00, & 0.30E+03, 0.20E+04, 0.20E+04, 0.00E+00, 0.00E+00, 0.00E+00, & 0.10E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+04, & 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.15E+04, 0.20E+04, & 0.20E+04, 0.20E+04, 0.17E+04, 0.00E+00, 0.20E+03, 0.17E+04, & 0.00E+00, 0.20E+03, 0.17E+04, 0.17E+04, 0.00E+00, 0.00E+00, & 0.00E+00, 0.10E+03, 0.10E+02, 0.10E+02, 0.10E+02, 0.10E+02, & 0.10E+04, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+04, & 0.20E+04, 0.20E+04, 0.20E+04, 0.15E+04, 0.00E+00, 0.10E+03, & 0.15E+04, 0.00E+00, 0.10E+03, 0.15E+04, 0.15E+04, 0.00E+00, & 0.00E+00, 0.00E+00, 0.10E+03, 0.10E+02, 0.10E+02, 0.10E+02, & 0.10E+02, 0.10E+04, 0.10E+02, 0.10E+02, 0.10E+02, 0.10E+02, & 0.10E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.15E+04, 0.00E+00, & 0.50E+02, 0.15E+04, 0.00E+00, 0.50E+02, 0.15E+04, 0.15E+04, & 0.00E+00, 0.00E+00, 0.00E+00, 0.10E+03, 0.50E+02, 0.50E+02, & 0.50E+02, 0.50E+02, 0.12E+04, 0.80E+02, 0.80E+02, 0.80E+02, & 0.10E+03, 0.12E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.15E+04, & 0.00E+00, 0.20E+03, 0.15E+04, 0.00E+00, 0.20E+03, 0.15E+04, & 0.15E+04, 0.00E+00, 0.00E+00, 0.00E+00/ DO iseason = 1, dep_seasons rac(1:nlu,iseason) = dat3(1:nlu,iseason) END DO ! RGSS for ground surface SO2 ! data ((rgss(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.40E+03, & DATA ((dat4(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.40E+03, & 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.50E+03, 0.35E+03, & 0.35E+03, 0.35E+03, 0.35E+03, 0.50E+03, 0.50E+03, 0.50E+03, & 0.50E+03, 0.10E+03, 0.10E+01, 0.10E+01, 0.10E+03, 0.10E+04, & 0.10E+01, 0.10E+03, 0.10E+03, 0.10E+04, 0.10E+03, 0.10E+04, & 0.40E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.50E+03, & 0.35E+03, 0.35E+03, 0.35E+03, 0.35E+03, 0.50E+03, 0.50E+03, & 0.50E+03, 0.50E+03, 0.10E+03, 0.10E+01, 0.10E+01, 0.10E+03, & 0.10E+04, 0.10E+01, 0.10E+03, 0.10E+03, 0.10E+04, 0.10E+03, & 0.10E+04, 0.40E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, & 0.50E+03, 0.35E+03, 0.35E+03, 0.35E+03, 0.35E+03, 0.50E+03, & 0.50E+03, 0.50E+03, 0.50E+03, 0.20E+03, 0.10E+01, 0.10E+01, & 0.20E+03, 0.10E+04, 0.10E+01, 0.20E+03, 0.20E+03, 0.10E+04, & 0.10E+03, 0.10E+04, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, & 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, 0.10E+03, & 0.10E+03, 0.10E+03, 0.50E+03, 0.10E+03, 0.10E+03, 0.10E+01, & 0.10E+03, 0.10E+03, 0.10E+04, 0.10E+03, 0.10E+03, 0.10E+03, & 0.10E+04, 0.10E+03, 0.10E+04, 0.50E+03, 0.15E+03, 0.15E+03, & 0.15E+03, 0.15E+03, 0.50E+03, 0.35E+03, 0.35E+03, 0.35E+03, & 0.35E+03, 0.50E+03, 0.50E+03, 0.50E+03, 0.50E+03, 0.20E+03, & 0.10E+01, 0.10E+01, 0.20E+03, 0.10E+04, 0.10E+01, 0.20E+03, & 0.20E+03, 0.10E+04, 0.10E+03, 0.10E+04/ DO iseason = 1, dep_seasons rgss(1:nlu,iseason) = dat4(1:nlu,iseason) END DO ! RGSO for ground surface O3 ! data ((rgso(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.30E+03, & DATA ((dat5(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.30E+03, & 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.20E+03, 0.20E+03, & 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, & 0.20E+03, 0.30E+03, 0.20E+04, 0.10E+04, 0.30E+03, 0.40E+03, & 0.10E+04, 0.30E+03, 0.30E+03, 0.40E+03, 0.35E+04, 0.40E+03, & 0.30E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.20E+03, & 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, & 0.20E+03, 0.20E+03, 0.30E+03, 0.20E+04, 0.80E+03, 0.30E+03, & 0.40E+03, 0.80E+03, 0.30E+03, 0.30E+03, 0.40E+03, 0.35E+04, & 0.40E+03, 0.30E+03, 0.15E+03, 0.15E+03, 0.15E+03, 0.15E+03, & 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, & 0.20E+03, 0.20E+03, 0.20E+03, 0.30E+03, 0.20E+04, 0.10E+04, & 0.30E+03, 0.40E+03, 0.10E+04, 0.30E+03, 0.30E+03, 0.40E+03, & 0.35E+04, 0.40E+03, 0.60E+03, 0.35E+04, 0.35E+04, 0.35E+04, & 0.35E+04, 0.35E+04, 0.35E+04, 0.35E+04, 0.35E+04, 0.35E+04, & 0.35E+04, 0.35E+04, 0.20E+03, 0.35E+04, 0.35E+04, 0.20E+04, & 0.35E+04, 0.35E+04, 0.40E+03, 0.35E+04, 0.35E+04, 0.35E+04, & 0.40E+03, 0.35E+04, 0.40E+03, 0.30E+03, 0.15E+03, 0.15E+03, & 0.15E+03, 0.15E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, & 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.20E+03, 0.30E+03, & 0.20E+04, 0.10E+04, 0.30E+03, 0.40E+03, 0.10E+04, 0.30E+03, & 0.30E+03, 0.40E+03, 0.35E+04, 0.40E+03/ DO iseason = 1, dep_seasons rgso(1:nlu,iseason) = dat5(1:nlu,iseason) END DO ! RCLS for exposed surfaces in the lower canopy SO2 ! data ((rcls(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+11, & DATA ((dat6(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, & 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, & 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.20E+04, & 0.20E+04, 0.20E+04, 0.10E+11, 0.25E+04, 0.20E+04, 0.10E+11, & 0.25E+04, 0.20E+04, 0.20E+04, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, & 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, 0.90E+04, & 0.20E+04, 0.20E+04, 0.40E+04, 0.10E+11, 0.90E+04, 0.40E+04, & 0.10E+11, 0.90E+04, 0.40E+04, 0.40E+04, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.90E+04, 0.90E+04, 0.90E+04, 0.90E+04, 0.20E+04, 0.90E+04, & 0.90E+04, 0.20E+04, 0.30E+04, 0.60E+04, 0.10E+11, 0.90E+04, & 0.60E+04, 0.10E+11, 0.90E+04, 0.60E+04, 0.60E+04, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.90E+04, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, & 0.90E+04, 0.90E+04, 0.20E+04, 0.20E+03, 0.40E+03, 0.10E+11, & 0.90E+04, 0.40E+03, 0.10E+11, 0.90E+04, 0.40E+03, 0.40E+03, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.40E+04, 0.40E+04, & 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, 0.40E+04, & 0.20E+04, 0.40E+04, 0.20E+04, 0.20E+04, 0.20E+04, 0.30E+04, & 0.10E+11, 0.40E+04, 0.30E+04, 0.10E+11, 0.40E+04, 0.30E+04, & 0.30E+04, 0.10E+11, 0.10E+11, 0.10E+11/ DO iseason = 1, dep_seasons rcls(1:nlu,iseason) = dat6(1:nlu,iseason) END DO ! RCLO for exposed surfaces in the lower canopy O3 ! data ((rclo(ILAND,ISEASON),ILAND=1,25),ISEASON=1,5)/0.10E+11, & DATA ((dat7(iland,iseason),iland=1,nlu),iseason=1,dep_seasons)/0.10E+11, & 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, & 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, & 0.10E+04, 0.10E+04, 0.10E+11, 0.10E+04, 0.10E+04, 0.10E+11, & 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+11, 0.10E+11, 0.10E+11, & 0.10E+11, 0.40E+03, 0.40E+03, 0.40E+03, 0.40E+03, 0.40E+03, & 0.40E+03, 0.40E+03, 0.40E+03, 0.10E+04, 0.40E+03, 0.40E+03, & 0.10E+04, 0.10E+04, 0.60E+03, 0.10E+11, 0.40E+03, 0.60E+03, & 0.10E+11, 0.40E+03, 0.60E+03, 0.60E+03, 0.10E+11, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, & 0.40E+03, 0.40E+03, 0.40E+03, 0.40E+03, 0.10E+04, 0.40E+03, & 0.40E+03, 0.10E+04, 0.10E+04, 0.60E+03, 0.10E+11, 0.80E+03, & 0.60E+03, 0.10E+11, 0.80E+03, 0.60E+03, 0.60E+03, 0.10E+11, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+04, 0.10E+04, 0.10E+04, & 0.10E+04, 0.40E+03, 0.10E+04, 0.10E+04, 0.10E+04, 0.10E+04, & 0.40E+03, 0.40E+03, 0.10E+04, 0.15E+04, 0.60E+03, 0.10E+11, & 0.80E+03, 0.60E+03, 0.10E+11, 0.80E+03, 0.60E+03, 0.60E+03, & 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+11, 0.10E+04, 0.10E+04, & 0.10E+04, 0.10E+04, 0.50E+03, 0.50E+03, 0.50E+03, 0.50E+03, & 0.10E+04, 0.50E+03, 0.15E+04, 0.10E+04, 0.15E+04, 0.70E+03, & 0.10E+11, 0.60E+03, 0.70E+03, 0.10E+11, 0.60E+03, 0.70E+03, & 0.70E+03, 0.10E+11, 0.10E+11, 0.10E+11/ DO iseason = 1, dep_seasons rclo(1:nlu,iseason) = dat7(1:nlu,iseason) END DO ! data ((dat8(iseason,iland),iseason=1,5),iland=1,11) / & ! 1.e36, 60., 120., 70., 130., 100.,1.e36,1.e36, 80., 100., 150., & ! 1.e36,1.e36,1.e36,1.e36, 250., 500.,1.e36,1.e36,1.e36,1.e36,1.e36, & ! 1.e36,1.e36,1.e36,1.e36, 250., 500.,1.e36,1.e36,1.e36,1.e36,1.e36, & ! 1.e36,1.e36,1.e36,1.e36, 400., 800.,1.e36,1.e36,1.e36,1.e36,1.e36, & ! 1.e36, 120., 240., 140., 250., 190.,1.e36,1.e36, 160., 200., 300. / ! ri_pan(:,:) = dat8(:,:) !-------------------------------------------------- ! Initialize parameters !-------------------------------------------------- hstar(1:numgas) = 0. hstar4(1:numgas) = 0. dhr(1:numgas) = 0. f0(1:numgas) = 0. dvj(1:numgas) = 99. if( .not. allocated(luse2usgs) ) then allocate( luse2usgs(config_flags%num_land_cat),stat=astat ) if( astat /= 0 ) then CALL wrf_error_fatal( 'dep_init: failed to allocate luse2usgs array' ) end if if( trim(mminlu_loc) == 'USGS' ) then luse2usgs(:) = (/ (iland,iland=1,config_flags%num_land_cat) /) elseif( trim(mminlu_loc) == 'MODIFIED_IGBP_MODIS_NOAH' ) then luse2usgs(:) = (/ 14,13,12,11,15,8,9,10,10,7, & 17,4,1,5,24,19,16,21,22,23 /) endif endif !-- chm_is_moz = config_flags%chem_opt == MOZART_KPP .or. & config_flags%chem_opt == MOZCART_KPP .or. & config_flags%chem_opt == T1_MOZCART_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP !-------------------------------------------------- ! HENRY''S LAW COEFFICIENTS ! Effective Henry''s law coefficient at pH 7 ! [KH298]=mole/(l atm) !-------------------------------------------------- is_cbm4_kpp : & if( .not. (config_flags%chem_opt == CBM4_KPP .or. & config_flags%chem_opt == CB05_SORG_AQ_KPP .or. & config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP) ) then if( chm_is_moz ) then hstar(p_o3) = 1.15E-2 hstar(p_co) = 1.e-3 hstar(p_h2o2) = 8.33E+4 hstar(p_hcho) = 6.3e3 hstar(p_ch3ooh) = 311. hstar(p_ch3oh) = 220. hstar(p_ch3cooh) = 6.3e3 hstar(p_acet) = 27. hstar(p_paa) = 837. hstar(p_c3h6ooh) = 220. hstar(p_pan) = 5. hstar(p_mpan) = 1.15e-2 hstar(p_c2h5oh) = 200. hstar(p_etooh) = 336. hstar(p_prooh) = 336. hstar(p_acetp) = 336. hstar(p_onit) = 1.e3 hstar(p_onitr) = 7.51e3 hstar(p_acetol) = 6.3e3 hstar(p_glyald) = 4.14e4 hstar(p_hydrald) = 70. hstar(p_alkooh) = 311. hstar(p_mekooh) = 311. hstar(p_tolooh) = 311. hstar(p_terpooh) = 311. if (config_flags%chem_opt == T1_MOZCART_KPP ) then hstar(p_alknit) = 1.0e+03 hstar(p_ch3cn) = 5.3e+01 hstar(p_eooh) = 1.7e+06 hstar(p_hcn) = 1.2e+01 hstar(p_honitr) = 1.0e+03 hstar(p_hpald) = 9.5e+02 hstar(p_iepox) = 3.0e+07 hstar(p_isopao2) = 2.0e+03 hstar(p_isopbo2) = 2.0e+03 hstar(p_isopnita) = 9.5e+02 hstar(p_isopnitb) = 9.5e+02 hstar(p_isopnooh) = 3.4e+02 hstar(p_nc4ch2oh) = 4.0e+04 hstar(p_nc4cho) = 1.0e+03 hstar(p_noa) = 1.0e+03 hstar(p_nterpooh) = 1.0e+03 hstar(p_terpnit) = 9.5e+02 endif if( config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then hstar(p_sulf) = 2.600E+06 if ( config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then hstar(p_cvasoaX) = 0.0 hstar(p_cvasoa1) = 1.06E+08 hstar(p_cvasoa2) = 1.84E+07 hstar(p_cvasoa3) = 3.18E+06 hstar(p_cvasoa4) = 5.50E+05 hstar(p_cvbsoaX) = 0.0 hstar(p_cvbsoa1) = 5.25E+09 hstar(p_cvbsoa2) = 7.00E+08 hstar(p_cvbsoa3) = 9.33E+07 hstar(p_cvbsoa4) = 1.24E+07 endif end if else if( config_flags%chem_opt == crimech_kpp .or. & config_flags%chem_opt == cri_mosaic_8bin_aq_kpp .or. & config_flags%chem_opt == cri_mosaic_4bin_aq_kpp ) then hstar(p_o3) = 1.15E-2 hstar(p_co) = 1.e-3 hstar(p_h2o2) = 8.33E+4 hstar(p_hcho) = 6.3e3 hstar(p_ch3ooh) = 311. hstar(p_ch3oh) = 220. hstar(p_ch3cooh) = 6.3e3 hstar(p_ket) = 27. hstar(p_paa) = 837. hstar(p_c2h5co3h) = 837. hstar(p_hoch2co3h) = 837. ! hstar(p_c3h6ooh) = 220. hstar(p_pan) = 5. hstar(p_mpan) = 1.15e-2 hstar(p_ru12pan) = 1.15e-2 hstar(p_rtn26pan) = 1.15e-2 hstar(p_phan) = 1.15e-2 hstar(p_ppn) = 1.15e-2 hstar(p_c2h5oh) = 200. hstar(p_c2h5ooh) = 336. ! hstar(p_ic3h7ooh) = 336. ! hstar(p_acetp) = 336. ! hstar(p_onit) = 1.e3 !! hstar(p_onitr) = 7.51e3 ! hstar(p_acetol) = 6.3e3 ! hstar(p_glyald) = 4.14e4 ! hstar(p_hydrald) = 70. hstar(p_hcooh) = 311. hstar(p_prooh) = 311. hstar(p_hoc2h4ooh) = 311. hstar(p_rn10ooh) = 311. hstar(p_rn13ooh) = 311. hstar(p_rn16ooh) = 311. hstar(p_rn19ooh) = 311. hstar(p_rn8ooh) = 311. hstar(p_rn11ooh) = 311. hstar(p_rn14ooh) = 311. hstar(p_rn17ooh) = 311. hstar(p_rn9ooh) = 311. hstar(p_rn12ooh) = 311. hstar(p_rn15ooh) = 311. hstar(p_rn18ooh) = 311. hstar(p_nrn6ooh) = 311. hstar(p_nrn9ooh) = 311. hstar(p_nrn12ooh) = 311. hstar(p_ru14ooh) = 311. hstar(p_ru12ooh) = 311. hstar(p_ru10ooh) = 311. hstar(p_nru14ooh) = 311. hstar(p_nru12ooh) = 311. hstar(p_ra13ooh) = 311. hstar(p_ra16ooh) = 311. hstar(p_ra19ooh) = 311. hstar(p_rtn28ooh) = 311. hstar(p_rtn26ooh) = 311. hstar(p_nrtn28ooh) = 311. hstar(p_rtn25ooh) = 311. hstar(p_rtn24ooh) = 311. hstar(p_rtn23ooh) = 311. hstar(p_rtn14ooh) = 311. hstar(p_rtn10ooh) = 311. hstar(p_rcooh25) = 311. hstar(p_rtx28ooh) = 311. hstar(p_rtx24ooh) = 311. hstar(p_rtx22ooh) = 311. hstar(p_nrtx28ooh) = 311. hstar(p_ra22ooh) = 311. hstar(p_ra25ooh) = 311. hstar(p_ch3no3) = 1.e3 hstar(p_c2h5no3) = 1.e3 hstar(p_hoc2h4no3) = 1.e3 hstar(p_rn10no3) = 1.e3 hstar(p_rn13no3) = 1.e3 hstar(p_rn19no3) = 1.e3 hstar(p_rn9no3) = 1.e3 hstar(p_rn12no3) = 1.e3 hstar(p_rn15no3) = 1.e3 hstar(p_rn18no3) = 1.e3 hstar(p_rn16no3) = 1.e3 hstar(p_ru14no3) = 1.e3 hstar(p_ra13no3) = 1.e3 hstar(p_ra16no3) = 1.e3 hstar(p_ra19no3) = 1.e3 hstar(p_rtn28no3) = 1.e3 hstar(p_rtn25no3) = 1.e3 hstar(p_rtx28no3) = 1.e3 hstar(p_rtx24no3) = 1.e3 hstar(p_rtx22no3) = 1.e3 hstar(p_rtn23no3) = 1.e3 hstar(p_ra22no3) = 1.e3 hstar(p_ra25no3) = 1.e3 hstar(p_ic3h7no3) = 1.e3 hstar(p_ch3cho) = 1.14E+1 hstar(p_c2h5cho) = 1.14E+1 hstar(p_hoch2cho) = 1.14E+1 hstar(p_carb14) = 1.14E+1 hstar(p_carb17) = 1.14E+1 hstar(p_carb7) = 1.14E+1 hstar(p_carb10) = 1.14E+1 hstar(p_carb13) = 1.14E+1 hstar(p_carb16) = 1.14E+1 hstar(p_carb3) = 1.14E+1 hstar(p_carb6) = 1.14E+1 hstar(p_carb9) = 1.14E+1 hstar(p_carb12) = 1.14E+1 hstar(p_carb15) = 1.14E+1 hstar(p_ccarb12) = 1.14E+1 hstar(p_ucarb12) = 1.14E+1 hstar(p_ucarb10) = 1.14E+1 hstar(p_nucarb12) = 1.14E+1 hstar(p_udcarb8) = 1.14E+1 hstar(p_udcarb11) = 1.14E+1 hstar(p_udcarb14) = 1.14E+1 hstar(p_tncarb26) = 1.14E+1 hstar(p_tncarb10) = 1.14E+1 hstar(p_tncarb15) = 1.14E+1 hstar(p_txcarb24) = 1.14E+1 hstar(p_txcarb22) = 1.14E+1 hstar(p_carb11a) = 1.14E+1 hstar(p_tncarb12) = 1.14E+1 hstar(p_tncarb11) = 1.14E+1 hstar(p_udcarb17) = 1.14E+1 else hstar(p_o3) = 1.13E-2 hstar(p_co) = 8.20E-3 hstar(p_h2o2) = 7.45E+4 hstar(p_hcho) = 2.97E+3 hstar(p_pan) = 2.97 hstar(p_paa) = 473. hstar(p_onit) = 1.13 end if hstar(p_no2) = 6.40E-3 hstar(p_no) = 1.90E-3 hstar(p_aco3) = 1.14E+1 hstar(p_tpan) = 2.97E+0 hstar(p_hono) = 3.47E+5 hstar(p_no3) = 1.50E+1 hstar(p_hno4) = 2.00E+13 hstar(p_ald) = 1.14E+1 hstar(p_op1) = 2.21E+2 hstar(p_op2) = 1.68E+6 hstar(p_ket) = 3.30E+1 hstar(p_gly) = 1.40E+6 hstar(p_mgly) = 3.71E+3 hstar(p_dcb) = 1.40E+6 hstar(p_so2) = 2.53E+5 hstar(p_eth) = 2.00E-3 hstar(p_hc3) = 1.42E-3 hstar(p_hc5) = 1.13E-3 hstar(p_hc8) = 1.42E-3 hstar(p_olt) = 4.76E-3 hstar(p_oli) = 1.35E-3 hstar(p_tol) = 1.51E-1 hstar(p_csl) = 4.00E+5 hstar(p_xyl) = 1.45E-1 hstar(p_iso) = 4.76E-3 hstar(p_hno3) = 2.69E+13 hstar(p_ora1) = 9.85E+6 hstar(p_ora2) = 9.63E+5 hstar(p_nh3) = 1.04E+4 hstar(p_n2o5) = 1.00E+10 if(p_ol2 >= param_first_scalar) hstar(p_ol2) = 4.67E-3 if(p_par >= param_first_scalar) hstar(p_par) = 1.13E-3 !wig, 1-May-2007: for CBMZ if(p_ch4 >= param_first_scalar) then hstar(p_ch4) = 1.50E-3 dhr(p_ch4) = 0. f0(p_ch4) = 0. dvj(p_ch4) = 0.250 end if if(p_co2 >= param_first_scalar) then hstar(p_co2) = 1.86E-1 dhr(p_co2) = 1636. f0(p_co2) = 0. dvj(p_co2) = 0.151 end if !-------------------------------------------------- ! FOLLOWING FOR RACM !-------------------------------------------------- if( p_ete >= param_first_scalar ) then HSTAR(p_ETE )=4.67E-3 HSTAR(p_API )=4.76E-3 HSTAR(p_LIM )=4.76E-3 HSTAR(p_DIEN)=4.76E-3 HSTAR(p_MACR)=1.14E+1 HSTAR(p_UDD )=1.40E+6 HSTAR(p_HKET)=7.80E+3 DHR(p_ETE )= 0. DHR(p_API )= 0. DHR(p_LIM )= 0. DHR(p_DIEN)= 0. DHR(p_MACR)= 6266. DHR(p_UDD )= 0. DHR(p_HKET)= 0. F0(p_ETE )=0. F0(p_API )=0. F0(p_LIM )=0. F0(p_DIEN)=0. F0(p_MACR)=0. F0(p_UDD )=0. F0(p_HKET)=0. DVJ(p_ETE )=0.189 DVJ(p_API )=0.086 DVJ(p_LIM )=0.086 DVJ(p_DIEN)=0.136 DVJ(p_MACR)=0.120 DVJ(p_UDD )=0.092 DVJ(p_HKET)=0.116 endif !-------------------------------------------------- ! -DH/R (for temperature correction) ! [-DH/R]=K !-------------------------------------------------- if( chm_is_moz ) then dhr(p_o3) = 2560. dhr(p_h2o2) = 7379. dhr(p_hcho) = 6425. dhr(p_ch3ooh) = 5241. dhr(p_ch3oh) = 4934. dhr(p_ch3cooh) = 6425. dhr(p_acet) = 5300. dhr(p_paa) = 5308. dhr(p_c3h6ooh) = 5653. dhr(p_pan) = 0. dhr(p_mpan) = 2560. dhr(p_c2h5oh) = 6500. dhr(p_etooh) = 5995. dhr(p_prooh) = 5995. dhr(p_acetp) = 5995. dhr(p_onit) = 6000. dhr(p_onitr) = 6485. dhr(p_acetol) = 6425. dhr(p_glyald) = 4630. dhr(p_hydrald) = 6000. dhr(p_alkooh) = 5241. dhr(p_mekooh) = 5241. dhr(p_tolooh) = 5241. dhr(p_terpooh) = 5241. if (config_flags%chem_opt == T1_MOZCART_KPP ) then dhr(p_alknit) = 0. dhr(p_ch3cn) = 4100. dhr(p_eooh) = 9700. dhr(p_hcn) = 5000. dhr(p_honitr) = 0. dhr(p_hpald) = 0. dhr(p_iepox) = 0. dhr(p_isopao2) = 6600. dhr(p_isopbo2) = 6600. dhr(p_isopnita) = 0. dhr(p_isopnitb) = 0. dhr(p_isopnooh) = 6000. dhr(p_nc4ch2oh) = 8600. dhr(p_nc4cho) = 0. dhr(p_noa) = 0. dhr(p_nterpooh) = 0. dhr(p_terpnit) = 0. elseif( config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then dhr(p_sulf) = 0.000E+00 end if if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then dhr(p_cvasoaX) = 0. dhr(p_cvasoa1) = 6014. dhr(p_cvasoa2) = 6014. dhr(p_cvasoa3) = 6014. dhr(p_cvasoa4) = 6014. dhr(p_cvbsoaX) = 0. dhr(p_cvbsoa1) = 6014. dhr(p_cvbsoa2) = 6014. dhr(p_cvbsoa3) = 6014. dhr(p_cvbsoa4) = 6014. endif else if( config_flags%chem_opt == crimech_kpp .or. & config_flags%chem_opt == cri_mosaic_8bin_aq_kpp .or. & config_flags%chem_opt == cri_mosaic_4bin_aq_kpp ) then dhr(p_o3) = 2560. dhr(p_h2o2) = 7379. dhr(p_hcho) = 6425. dhr(p_ch3ooh) = 5241. dhr(p_ch3oh) = 4934. dhr(p_ch3cooh) = 6425. dhr(p_ket) = 5300. dhr(p_paa) = 5308. dhr(p_c2h5co3h) = 5308. dhr(p_hoch2co3h) = 5308. ! dhr(p_c3h6ooh) = 5653. dhr(p_pan) = 0. dhr(p_mpan) = 2560. dhr(p_ru12pan) = 2560. dhr(p_rtn26pan) = 2560. dhr(p_phan) = 2560. dhr(p_ppn) = 2560. dhr(p_c2h5oh) = 6500. ! dhr(p_c3h6ooh) = 220. dhr(p_c2h5ooh) = 5995. ! dhr(p_ic3h7ooh) = 5995. ! dhr(p_acetp) = 5995. ! dhr(p_onit) = 6000. ! dhr(p_onitr) = 6485. ! dhr(p_acetol) = 6425. ! dhr(p_glyald) = 4630. ! dhr(p_hydrald) = 6000. dhr(p_hcooh) = 5241. dhr(p_prooh) = 5241. dhr(p_hoc2h4ooh) = 5241. dhr(p_rn10ooh) = 5241. dhr(p_rn13ooh) = 5241. dhr(p_rn16ooh) = 5241. dhr(p_rn19ooh) = 5241. dhr(p_rn8ooh) = 5241. dhr(p_rn11ooh) = 5241. dhr(p_rn14ooh) = 5241. dhr(p_rn17ooh) = 5241. dhr(p_rn9ooh) = 5241. dhr(p_rn12ooh) = 5241. dhr(p_rn15ooh) = 5241. dhr(p_rn18ooh) = 5241. dhr(p_nrn6ooh) = 5241. dhr(p_nrn9ooh) = 5241. dhr(p_nrn12ooh) = 5241. dhr(p_ru14ooh) = 5241. dhr(p_ru12ooh) = 5241. dhr(p_ru10ooh) = 5241. dhr(p_nru14ooh) = 5241. dhr(p_nru12ooh) = 5241. dhr(p_ra13ooh) = 5241. dhr(p_ra16ooh) = 5241. dhr(p_ra19ooh) = 5241. dhr(p_rtn28ooh) = 5241. dhr(p_rtn26ooh) = 5241. dhr(p_nrtn28ooh) = 5241. dhr(p_rtn25ooh) = 5241. dhr(p_rtn24ooh) = 5241. dhr(p_rtn23ooh) = 5241. dhr(p_rtn14ooh) = 5241. dhr(p_rtn10ooh) = 5241. dhr(p_rcooh25) = 5241. dhr(p_rtx28ooh) = 5241. dhr(p_rtx24ooh) = 5241. dhr(p_rtx22ooh) = 5241. dhr(p_nrtx28ooh) = 5241. dhr(p_ra22ooh) = 5241. dhr(p_ra25ooh) = 5241. dhr(p_ch3no3) = 6000. dhr(p_c2h5no3) = 6000. dhr(p_hoc2h4no3) = 6000. dhr(p_rn10no3) = 6000. dhr(p_rn13no3) = 6000. dhr(p_rn19no3) = 6000. dhr(p_rn9no3) = 6000. dhr(p_rn12no3) = 6000. dhr(p_rn15no3) = 6000. dhr(p_rn18no3) = 6000. dhr(p_rn16no3) = 6000. dhr(p_ru14no3) = 6000. dhr(p_ra13no3) = 6000. dhr(p_ra16no3) = 6000. dhr(p_ra19no3) = 6000. dhr(p_rtn28no3) = 6000. dhr(p_rtn25no3) = 6000. dhr(p_rtx28no3) = 6000. dhr(p_rtx24no3) = 6000. dhr(p_rtx22no3) = 6000. dhr(p_rtn23no3) = 6000. dhr(p_ra22no3) = 6000. dhr(p_ra25no3) = 6000. dhr(p_ic3h7no3) = 6000. dhr(p_ch3cho) = 6266. dhr(p_c2h5cho) = 6266. dhr(p_hoch2cho) = 6266. dhr(p_carb14) = 6266. dhr(p_carb17) = 6266. dhr(p_carb7) = 6266. dhr(p_carb10) = 6266. dhr(p_carb13) = 6266. dhr(p_carb16) = 6266. dhr(p_carb3) = 6266. dhr(p_carb6) = 6266. dhr(p_carb9) = 6266. dhr(p_carb12) = 6266. dhr(p_carb15) = 6266. dhr(p_ccarb12) = 6266. dhr(p_ucarb12) = 6266. dhr(p_ucarb10) = 6266. dhr(p_nucarb12) = 6266. dhr(p_udcarb8) = 6266. dhr(p_udcarb11) = 6266. dhr(p_udcarb14) = 6266. dhr(p_tncarb26) = 6266. dhr(p_tncarb10) = 6266. dhr(p_tncarb15) = 6266. dhr(p_txcarb24) = 6266. dhr(p_txcarb22) = 6266. dhr(p_carb11a) = 6266. dhr(p_tncarb12) = 6266. dhr(p_tncarb11) = 6266. dhr(p_udcarb17) = 6266. else dhr(p_o3) = 2300. dhr(p_h2o2) = 6615. dhr(p_hcho) = 7190. dhr(p_pan) = 5760. dhr(p_onit) = 5487. dhr(p_paa) = 6170. end if dhr(p_no2) = 2500. dhr(p_no) = 1480. dhr(p_aco3) = 6266. dhr(p_tpan) = 5760. dhr(p_hono) = 3775. dhr(p_no3) = 0. dhr(p_hno4) = 0. dhr(p_co) = 0. dhr(p_ald) = 6266. dhr(p_op1) = 5607. dhr(p_op2) = 10240. dhr(p_ket) = 5773. dhr(p_gly) = 0. dhr(p_mgly) = 7541. dhr(p_dcb) = 0. dhr(p_so2) = 5816. dhr(p_eth) = 0. dhr(p_hc3) = 0. dhr(p_hc5) = 0. dhr(p_hc8) = 0. dhr(p_olt) = 0. dhr(p_oli) = 0. dhr(p_tol) = 0. dhr(p_csl) = 0. dhr(p_xyl) = 0. dhr(p_iso) = 0. dhr(p_hno3) = 8684. dhr(p_ora1) = 5716. dhr(p_ora2) = 8374. dhr(p_nh3) = 3660. dhr(p_n2o5) = 0. if(p_ol2 >= param_first_scalar) dhr(p_ol2) = 0. if(p_par >= param_first_scalar) dhr(p_par) = 0. !wig, 1-May-2007: for CBMZ !-------------------------------------------------- ! REACTIVITY FACTORS ! [f0]=1 !-------------------------------------------------- if( chm_is_moz ) then f0(p_hcho) = small_value f0(p_ch3ooh) = .1 f0(p_ch3oh) = small_value f0(p_ch3cooh) = small_value f0(p_acet) = small_value f0(p_c3h6ooh) = .1 f0(p_mpan) = 1. f0(p_c2h5oh) = small_value f0(p_etooh) = .1 f0(p_prooh) = .1 f0(p_acetp) = .1 f0(p_onit) = .1 f0(p_onitr) = .1 f0(p_acetol) = small_value f0(p_glyald) = small_value f0(p_hydrald) = small_value f0(p_alkooh) = .1 f0(p_mekooh) = .1 f0(p_tolooh) = .1 f0(p_terpooh) = .1 if (config_flags%chem_opt == T1_MOZCART_KPP ) then f0(p_eooh) = f0(p_hcho) f0(p_honitr) = f0(p_h2o2) elseif( config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then f0(p_sulf) = 0. end if if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then f0(p_cvasoaX) = 0. f0(p_cvasoa1) = 0. f0(p_cvasoa2) = 0. f0(p_cvasoa3) = 0. f0(p_cvasoa4) = 0. f0(p_cvbsoaX) = 0. f0(p_cvbsoa1) = 0. f0(p_cvbsoa2) = 0. f0(p_cvbsoa3) = 0. f0(p_cvbsoa4) = 0. endif else if( config_flags%chem_opt == crimech_kpp .or. & config_flags%chem_opt == cri_mosaic_8bin_aq_kpp .or. & config_flags%chem_opt == cri_mosaic_4bin_aq_kpp ) then f0(p_hcho) = small_value f0(p_ch3ooh) = .1 f0(p_ch3oh) = small_value f0(p_ch3cooh) = small_value f0(p_ket) = small_value ! f0(p_c3h6ooh) = .1 f0(p_mpan) = .1 f0(p_ru12pan) = .1 f0(p_rtn26pan) = .1 f0(p_phan) = .1 f0(p_ppn) = .1 f0(p_c2h5oh) = small_value ! f0(p_c3h6ooh) = .1 f0(p_c2h5ooh) = .1 ! f0(p_ic3h7ooh) = .1 ! f0(p_acetp) = .1 ! f0(p_onit) = .1 ! f0(p_onitr) = .1 ! f0(p_acetol) = .1 ! f0(p_glyald) = .1 ! f0(p_hydrald) = .1 f0(p_hcooh) = .1 f0(p_prooh) = .1 f0(p_hoc2h4ooh) = .1 f0(p_rn10ooh) = .1 f0(p_rn13ooh) = .1 f0(p_rn16ooh) = .1 f0(p_rn19ooh) = .1 f0(p_rn8ooh) = .1 f0(p_rn11ooh) = .1 f0(p_rn14ooh) = .1 f0(p_rn17ooh) = .1 f0(p_rn9ooh) = .1 f0(p_rn12ooh) = .1 f0(p_rn15ooh) = .1 f0(p_rn18ooh) = .1 f0(p_nrn6ooh) = .1 f0(p_nrn9ooh) = .1 f0(p_nrn12ooh) = .1 f0(p_ru14ooh) = .1 f0(p_ru12ooh) = .1 f0(p_ru10ooh) = .1 f0(p_nru14ooh) = .1 f0(p_nru12ooh) = .1 f0(p_ra13ooh) = .1 f0(p_ra16ooh) = .1 f0(p_ra19ooh) = .1 f0(p_rtn28ooh) = .1 f0(p_rtn26ooh) = .1 f0(p_nrtn28ooh) = .1 f0(p_rtn25ooh) = .1 f0(p_rtn24ooh) = .1 f0(p_rtn23ooh) = .1 f0(p_rtn14ooh) = .1 f0(p_rtn10ooh) = .1 f0(p_rcooh25) = .1 f0(p_rtx28ooh) = .1 f0(p_rtx24ooh) = .1 f0(p_rtx22ooh) = .1 f0(p_nrtx28ooh) = .1 f0(p_ra22ooh) = .1 f0(p_ra25ooh) = .1 f0(p_ch3no3) = .1 f0(p_c2h5no3) = .1 f0(p_hoc2h4no3) = .1 f0(p_rn10no3) = .1 f0(p_rn13no3) = .1 f0(p_rn19no3) = .1 f0(p_rn9no3) = .1 f0(p_rn12no3) = .1 f0(p_rn15no3) = .1 f0(p_rn18no3) = .1 f0(p_rn16no3) = .1 f0(p_ru14no3) = .1 f0(p_ra13no3) = .1 f0(p_ra16no3) = .1 f0(p_ra19no3) = .1 f0(p_rtn28no3) = .1 f0(p_rtn25no3) = .1 f0(p_rtx28no3) = .1 f0(p_rtx24no3) = .1 f0(p_rtx22no3) = .1 f0(p_rtn23no3) = .1 f0(p_ra22no3) = .1 f0(p_ra25no3) = .1 f0(p_ic3h7no3) = .1 f0(p_ch3cho) = 0. f0(p_c2h5cho) = 0. f0(p_hoch2cho) = 0. f0(p_carb14) = 0. f0(p_carb17) = 0. f0(p_carb7) = 0. f0(p_carb10) = 0. f0(p_carb13) = 0. f0(p_carb16) = 0. f0(p_carb3) = 0. f0(p_carb6) = 0. f0(p_carb9) = 0. f0(p_carb12) = 0. f0(p_carb15) = 0. f0(p_ccarb12) = 0. f0(p_ucarb12) = 0. f0(p_ucarb10) = 0. f0(p_nucarb12) = 0. f0(p_udcarb8) = 0. f0(p_udcarb11) = 0. f0(p_udcarb14) = 0. f0(p_tncarb26) = 0. f0(p_tncarb10) = 0. f0(p_tncarb15) = 0. f0(p_txcarb24) = 0. f0(p_txcarb22) = 0. f0(p_carb11a) = 0. f0(p_tncarb12) = 0. f0(p_tncarb11) = 0. f0(p_udcarb17) = 0. else f0(p_hcho) = 0. f0(p_onit) = 0. end if f0(p_no2) = 0.1 f0(p_no) = 0. f0(p_pan) = 0.1 f0(p_o3) = 1. f0(p_aco3) = 1. f0(p_tpan) = 0.1 f0(p_hono) = 0.1 f0(p_no3) = 1. f0(p_hno4) = 0.1 f0(p_h2o2) = 1. f0(p_co) = 0. f0(p_ald) = 0. f0(p_op1) = 0.1 f0(p_op2) = 0.1 f0(p_paa) = 0.1 f0(p_ket) = 0. f0(p_gly) = 0. f0(p_mgly) = 0. f0(p_dcb) = 0. f0(p_so2) = 0. f0(p_eth) = 0. f0(p_hc3) = 0. f0(p_hc5) = 0. f0(p_hc8) = 0. f0(p_olt) = 0. f0(p_oli) = 0. f0(p_tol) = 0. f0(p_csl) = 0. f0(p_xyl) = 0. f0(p_iso) = 0. f0(p_hno3) = 0. f0(p_ora1) = 0. f0(p_ora2) = 0. f0(p_nh3) = 0. f0(p_n2o5) = 1. if(p_ol2 >= param_first_scalar) f0(p_ol2) = 0. if(p_par >= param_first_scalar) f0(p_par) = 0. !wig, 1-May-2007: for CBMZ !-------------------------------------------------- ! DIFFUSION COEFFICIENTS ! [DV]=cm2/s (assumed: 1/SQRT(molar mass) when not known) !-------------------------------------------------- if( chm_is_moz ) then dvj(p_o3) = 0.144 dvj(p_h2o2) = 0.1715 dvj(p_hcho) = 0.1825 dvj(p_ch3ooh) = 0.144 dvj(p_ch3oh) = 0.1767 dvj(p_ch3cooh) = 0.129 dvj(p_acet) = 0.1312 dvj(p_paa) = 0.1147 dvj(p_c3h6ooh) = 0.1042 dvj(p_mpan) = 0.0825 dvj(p_c2h5oh) = 0.1473 dvj(p_etooh) = 0.127 dvj(p_prooh) = 0.1146 dvj(p_acetp) = 0.1054 dvj(p_onit) = 0.0916 dvj(p_onitr) = 0.0824 dvj(p_acetol) = 0.116 dvj(p_glyald) = 0.129 dvj(p_hydrald) = 0.0999 dvj(p_alkooh) = 0.098 dvj(p_mekooh) = 0.098 dvj(p_tolooh) = 0.084 dvj(p_terpooh) = 0.073 if( config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. & config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then dvj(p_sulf) = 1.200E-01 end if if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then dvj(p_cvasoaX) = 0.120 ! ?? dvj(p_cvasoa1) = 0.120 ! ?? dvj(p_cvasoa2) = 0.120 ! ?? dvj(p_cvasoa3) = 0.120 ! ?? dvj(p_cvasoa4) = 0.120 ! ?? dvj(p_cvbsoaX) = 0.120 ! ?? dvj(p_cvbsoa1) = 0.120 ! ?? dvj(p_cvbsoa2) = 0.120 ! ?? dvj(p_cvbsoa3) = 0.120 ! ?? dvj(p_cvbsoa4) = 0.120 ! ?? endif else if( config_flags%chem_opt == crimech_kpp .or. & config_flags%chem_opt == cri_mosaic_8bin_aq_kpp .or. & config_flags%chem_opt == cri_mosaic_4bin_aq_kpp ) then dvj(p_o3) = 0.144 dvj(p_h2o2) = 0.1715 dvj(p_hcho) = 0.1825 dvj(p_ch3ooh) = 0.144 dvj(p_ch3oh) = 0.1767 dvj(p_ch3cooh) = 0.129 dvj(p_ket) = 0.1312 dvj(p_paa) = 0.1147 dvj(p_c2h5co3h) = 0.1147 dvj(p_hoch2co3h) = 0.1147 ! dvj(p_c3h6ooh) = 0.1042 dvj(p_mpan) = 0.0825 dvj(p_ru12pan) = 0.0825 dvj(p_rtn26pan) = 0.0825 dvj(p_phan) = 0.0825 dvj(p_ppn) = 0.0825 dvj(p_c2h5oh) = 0.1473 ! dvj(p_c3h6ooh) = 0.0916 dvj(p_c2h5ooh) = 0.091627 ! dvj(p_ic3h7ooh) = 0.0916146 ! dvj(p_acetp) = 0.1054 ! dvj(p_onit) = 0.0916 ! dvj(p_onitr) = 0.0824 ! dvj(p_acetol) = 0.116 ! dvj(p_glyald) = 0.129 ! dvj(p_hydrald) = 0.0999 dvj(p_hcooh) = 0.098 dvj(p_prooh) = 0.098 dvj(p_hoc2h4ooh) = 0.098 dvj(p_rn10ooh) = 0.098 dvj(p_rn13ooh) = 0.098 dvj(p_rn16ooh) = 0.098 dvj(p_rn19ooh) = 0.098 dvj(p_rn8ooh) = 0.098 dvj(p_rn11ooh) = 0.098 dvj(p_rn14ooh) = 0.098 dvj(p_rn17ooh) = 0.098 dvj(p_rn9ooh) = 0.098 dvj(p_rn12ooh) = 0.098 dvj(p_rn15ooh) = 0.098 dvj(p_rn18ooh) = 0.098 dvj(p_nrn6ooh) = 0.098 dvj(p_nrn9ooh) = 0.098 dvj(p_nrn12ooh) = 0.098 dvj(p_ru14ooh) = 0.098 dvj(p_ru12ooh) = 0.098 dvj(p_ru10ooh) = 0.098 dvj(p_nru14ooh) = 0.098 dvj(p_nru12ooh) = 0.098 dvj(p_ra13ooh) = 0.084 dvj(p_ra16ooh) = 0.084 dvj(p_ra19ooh) = 0.084 dvj(p_rtn28ooh) = 0.073 dvj(p_rtn26ooh) = 0.073 dvj(p_nrtn28ooh) = 0.073 dvj(p_rtn25ooh) = 0.073 dvj(p_rtn24ooh) = 0.073 dvj(p_rtn23ooh) = 0.073 dvj(p_rtn14ooh) = 0.073 dvj(p_rtn10ooh) = 0.073 dvj(p_rcooh25) = 0.073 dvj(p_rtx28ooh) = 0.073 dvj(p_rtx24ooh) = 0.073 dvj(p_rtx22ooh) = 0.073 dvj(p_nrtx28ooh) = 0.073 dvj(p_ra22ooh) = 0.084 dvj(p_ra25ooh) = 0.084 dvj(p_ch3no3) = 0.0916 dvj(p_c2h5no3) = 0.0916 dvj(p_hoc2h4no3) = 0.0916 dvj(p_rn10no3) = 0.0916 dvj(p_rn13no3) = 0.0916 dvj(p_rn19no3) = 0.0916 dvj(p_rn9no3) = 0.0916 dvj(p_rn12no3) = 0.0916 dvj(p_rn15no3) = 0.0916 dvj(p_rn18no3) = 0.0916 dvj(p_rn16no3) = 0.0916 dvj(p_ru14no3) = 0.0916 dvj(p_ra13no3) = 0.0916 dvj(p_ra16no3) = 0.0916 dvj(p_ra19no3) = 0.0916 dvj(p_rtn28no3) = 0.0916 dvj(p_rtn25no3) = 0.0916 dvj(p_rtx28no3) = 0.0916 dvj(p_rtx24no3) = 0.0916 dvj(p_rtx22no3) = 0.0916 dvj(p_rtn23no3) = 0.0916 dvj(p_ra22no3) = 0.0916 dvj(p_ra25no3) = 0.0916 dvj(p_ic3h7no3) = 0.0916 dvj(p_ch3cho) = 0.151 dvj(p_c2h5cho) = 0.151 dvj(p_hoch2cho) = 0.151 dvj(p_carb14) = 0.151 dvj(p_carb17) = 0.151 dvj(p_carb7) = 0.151 dvj(p_carb10) = 0.151 dvj(p_carb13) = 0.151 dvj(p_carb16) = 0.151 dvj(p_carb3) = 0.151 dvj(p_carb6) = 0.151 dvj(p_carb9) = 0.151 dvj(p_carb12) = 0.151 dvj(p_carb15) = 0.151 dvj(p_ccarb12) = 0.151 dvj(p_ucarb12) = 0.151 dvj(p_ucarb10) = 0.151 dvj(p_nucarb12) = 0.151 dvj(p_udcarb8) = 0.151 dvj(p_udcarb11) = 0.151 dvj(p_udcarb14) = 0.151 dvj(p_tncarb26) = 0.151 dvj(p_tncarb10) = 0.151 dvj(p_tncarb15) = 0.151 dvj(p_txcarb24) = 0.151 dvj(p_txcarb22) = 0.151 dvj(p_carb11a) = 0.151 dvj(p_tncarb12) = 0.151 dvj(p_tncarb11) = 0.151 dvj(p_udcarb17) = 0.151 else dvj(p_o3) = 0.175 dvj(p_h2o2) = 0.171 dvj(p_hcho) = 0.183 dvj(p_paa) = 0.115 dvj(p_onit) = 0.092 end if dvj(p_no2) = 0.147 dvj(p_no) = 0.183 dvj(p_pan) = 0.091 dvj(p_aco3) = 0.115 dvj(p_tpan) = 0.082 dvj(p_hono) = 0.153 dvj(p_no3) = 0.127 dvj(p_hno4) = 0.113 dvj(p_co) = 0.189 dvj(p_ald) = 0.151 dvj(p_op1) = 0.144 dvj(p_op2) = 0.127 dvj(p_ket) = 0.118 dvj(p_gly) = 0.131 dvj(p_mgly) = 0.118 dvj(p_dcb) = 0.107 dvj(p_so2) = 0.126 dvj(p_eth) = 0.183 dvj(p_hc3) = 0.151 dvj(p_hc5) = 0.118 dvj(p_hc8) = 0.094 dvj(p_olt) = 0.154 dvj(p_oli) = 0.121 dvj(p_tol) = 0.104 dvj(p_csl) = 0.096 dvj(p_xyl) = 0.097 dvj(p_iso) = 0.121 dvj(p_hno3) = 0.126 dvj(p_ora1) = 0.153 dvj(p_ora2) = 0.124 dvj(p_nh3) = 0.227 dvj(p_n2o5) = 0.110 dvj(p_ho) = 0.243 dvj(p_ho2) = 0.174 if(p_ol2 >= param_first_scalar) dvj(p_ol2) = 0.189 if(p_par >= param_first_scalar) dvj(p_par) = 0.118 !wig, 1-May-2007: for CBMZ ! Dep constants for SAPRCNOV, produced automatically using create_WRF_dep.m script,05-Oct-2009 pablosaide@uiowa.edu if(p_methacro.ge.param_first_scalar)then ! HSTAR hstar(p_h2so4) = 2.600E+06 hstar(p_ccho) = 1.700E+01 hstar(p_rcho) = 4.200E+03 hstar(p_etoh) = 2.200E+02 hstar(p_cco_oh) = 4.100E+03 hstar(p_rco_oh) = 4.100E+03 hstar(p_bacl) = 2.700E+01 hstar(p_bald) = 4.200E+01 hstar(p_isoprod) = 1.300E-02 hstar(p_methacro) = 6.500E+00 hstar(p_prod2) = 2.000E+01 hstar(p_dcb1) = 4.200E+03 hstar(p_dcb2) = 4.200E+03 hstar(p_dcb3) = 4.200E+03 hstar(p_ethene) = 4.700E-03 hstar(p_isoprene) = 1.300E-02 hstar(p_c2h2) = 1.000E-03 hstar(p_alk3) = 1.200E-03 hstar(p_alk4) = 1.200E-03 hstar(p_alk5) = 1.200E-03 hstar(p_aro1) = 2.100E-01 hstar(p_aro2) = 2.100E-01 hstar(p_ole1) = 1.300E-02 hstar(p_ole2) = 1.300E-02 hstar(p_terp) = 1.200E-03 hstar(p_sesq) = 1.200E-03 hstar(p_rno3) = 2.000E+00 hstar(p_nphe) = 2.100E-01 hstar(p_phen) = 1.900E+03 hstar(p_pan2) = 2.900E+00 hstar(p_pbzn) = 2.900E+00 hstar(p_ma_pan) = 2.900E+00 hstar(p_cco_ooh) = 3.100E+02 hstar(p_rco_o2) = 4.100E+03 hstar(p_rco_ooh) = 3.100E+02 hstar(p_xn) = 1.000E+00 hstar(p_xc) = 1.000E+00 hstar(p_c_o2) = 4.000E+03 hstar(p_cooh) = 3.100E+02 hstar(p_rooh) = 3.400E+02 hstar(p_ro2_r) = 4.000E+03 hstar(p_r2o2) = 4.000E+03 hstar(p_ro2_n) = 4.000E+03 hstar(p_cco_o2) = 1.700E+01 hstar(p_bzco_o2) = 2.100E-01 hstar(p_ma_rco3) = 6.500E+00 ! DHR dhr(p_h2so4) = 0.000E+00 dhr(p_ccho) = 5.000E+03 dhr(p_rcho) = 0.000E+00 dhr(p_etoh) = 5.200E+03 dhr(p_cco_oh) = 6.300E+03 dhr(p_rco_oh) = 6.300E+03 dhr(p_bacl) = 0.000E+00 dhr(p_bald) = 4.600E+03 dhr(p_isoprod) = 0.000E+00 dhr(p_methacro) = 0.000E+00 dhr(p_prod2) = 5.000E+03 dhr(p_dcb1) = 0.000E+00 dhr(p_dcb2) = 0.000E+00 dhr(p_dcb3) = 0.000E+00 dhr(p_ethene) = 1.800E+03 dhr(p_isoprene) = 0.000E+00 dhr(p_c2h2) = 0.000E+00 dhr(p_alk3) = 3.100E+03 dhr(p_alk4) = 3.100E+03 dhr(p_alk5) = 3.100E+03 dhr(p_aro1) = 3.600E+03 dhr(p_aro2) = 3.600E+03 dhr(p_ole1) = 6.400E+03 dhr(p_ole2) = 6.400E+03 dhr(p_terp) = 3.100E+03 dhr(p_sesq) = 3.100E+03 dhr(p_rno3) = 2.000E+03 dhr(p_nphe) = 3.600E+03 dhr(p_phen) = 7.300E+03 dhr(p_pan2) = 0.000E+00 dhr(p_pbzn) = 5.900E+03 dhr(p_ma_pan) = 0.000E+00 dhr(p_cco_ooh) = 5.200E+03 dhr(p_rco_o2) = 6.300E+03 dhr(p_rco_ooh) = 5.200E+03 dhr(p_xn) = 1.000E+00 dhr(p_xc) = 1.000E+00 dhr(p_c_o2) = 5.900E+03 dhr(p_cooh) = 5.200E+03 dhr(p_rooh) = 6.000E+03 dhr(p_ro2_r) = 5.900E+03 dhr(p_r2o2) = 5.900E+03 dhr(p_ro2_n) = 5.900E+03 dhr(p_cco_o2) = 5.000E+03 dhr(p_bzco_o2) = 3.600E+03 dhr(p_ma_rco3) = 0.000E+00 ! F0 f0(p_h2so4) = 0.000E+00 f0(p_ccho) = 0.000E+00 f0(p_rcho) = 0.000E+00 f0(p_etoh) = 0.000E+00 f0(p_cco_oh) = 0.000E+00 f0(p_rco_oh) = 0.000E+00 f0(p_bacl) = 0.000E+00 f0(p_bald) = 0.000E+00 f0(p_isoprod) = 0.000E+00 f0(p_methacro) = 0.000E+00 f0(p_prod2) = 0.000E+00 f0(p_dcb1) = 0.000E+00 f0(p_dcb2) = 0.000E+00 f0(p_dcb3) = 0.000E+00 f0(p_ethene) = 0.000E+00 f0(p_isoprene) = 0.000E+00 f0(p_c2h2) = 0.000E+00 f0(p_alk3) = 0.000E+00 f0(p_alk4) = 0.000E+00 f0(p_alk5) = 0.000E+00 f0(p_aro1) = 0.000E+00 f0(p_aro2) = 0.000E+00 f0(p_ole1) = 0.000E+00 f0(p_ole2) = 0.000E+00 f0(p_terp) = 0.000E+00 f0(p_sesq) = 0.000E+00 f0(p_rno3) = 0.000E+00 f0(p_nphe) = 0.000E+00 f0(p_phen) = 0.000E+00 f0(p_pan2) = 0.000E+00 f0(p_pbzn) = 0.000E+00 f0(p_ma_pan) = 0.000E+00 f0(p_cco_ooh) = 0.000E+00 f0(p_rco_o2) = 0.000E+00 f0(p_rco_ooh) = 0.000E+00 f0(p_xn) = 0.000E+00 f0(p_xc) = 0.000E+00 f0(p_c_o2) = 0.000E+00 f0(p_cooh) = 0.000E+00 f0(p_rooh) = 0.000E+00 f0(p_ro2_r) = 0.000E+00 f0(p_r2o2) = 0.000E+00 f0(p_ro2_n) = 0.000E+00 f0(p_cco_o2) = 0.000E+00 f0(p_bzco_o2) = 0.000E+00 f0(p_ma_rco3) = 0.000E+00 ! DVJ dvj(p_h2so4) = 1.200E-01 dvj(p_ccho) = 1.420E-01 dvj(p_rcho) = 1.420E-01 dvj(p_etoh) = 1.280E-01 dvj(p_cco_oh) = 1.000E-01 dvj(p_rco_oh) = 1.000E-01 dvj(p_bacl) = 1.000E-01 dvj(p_bald) = 1.420E-01 dvj(p_isoprod) = 1.000E-01 dvj(p_methacro) = 1.420E-01 dvj(p_prod2) = 9.800E-02 dvj(p_dcb1) = 1.420E-01 dvj(p_dcb2) = 1.420E-01 dvj(p_dcb3) = 1.420E-01 dvj(p_ethene) = 1.780E-01 dvj(p_isoprene) = 1.000E-01 dvj(p_c2h2) = 1.000E-01 dvj(p_alk3) = 2.000E-01 dvj(p_alk4) = 2.000E-01 dvj(p_alk5) = 2.000E-01 dvj(p_aro1) = 9.800E-02 dvj(p_aro2) = 9.800E-02 dvj(p_ole1) = 1.780E-01 dvj(p_ole2) = 1.780E-01 dvj(p_terp) = 1.000E-01 dvj(p_sesq) = 1.000E-01 dvj(p_rno3) = 1.390E-01 dvj(p_nphe) = 1.000E-01 dvj(p_phen) = 1.000E-01 dvj(p_pan2) = 3.600E-02 dvj(p_pbzn) = 3.600E-02 dvj(p_ma_pan) = 3.600E-02 dvj(p_cco_ooh) = 1.500E-01 dvj(p_rco_o2) = 1.000E-01 dvj(p_rco_ooh) = 1.500E-01 dvj(p_xn) = 1.000E-01 dvj(p_xc) = 1.000E-01 dvj(p_c_o2) = 1.760E-01 dvj(p_cooh) = 1.500E-01 dvj(p_rooh) = 1.500E-01 dvj(p_ro2_r) = 1.000E-01 dvj(p_r2o2) = 1.760E-01 dvj(p_ro2_n) = 1.000E-01 dvj(p_cco_o2) = 1.000E-01 dvj(p_bzco_o2) = 1.000E-01 dvj(p_ma_rco3) = 1.420E-01 endif !hstar for SOA species assumed 2700 following CMU approach if(p_pcg1_b_c.gt.1) hstar(p_pcg1_b_c) =2.7E+3 if(p_pcg2_b_c.gt.1) hstar(p_pcg2_b_c) =2.7E+3 if(p_pcg3_b_c.gt.1) hstar(p_pcg3_b_c)=2.7E+3 if(p_pcg4_b_c.gt.1) hstar(p_pcg4_b_c)=2.7E+3 if(p_pcg5_b_c.gt.1) hstar(p_pcg5_b_c)=2.7E+3 if(p_pcg6_b_c.gt.1) hstar(p_pcg6_b_c)=2.7E+3 if(p_pcg7_b_c.gt.1) hstar(p_pcg7_b_c)=2.7E+3 if(p_pcg8_b_c.gt.1) hstar(p_pcg8_b_c)=2.7E+3 if(p_pcg9_b_c.gt.1) hstar(p_pcg9_b_c)=2.7E+3 if(p_opcg1_b_c.gt.1) hstar(p_opcg1_b_c) =2.7E+3 if(p_opcg2_b_c.gt.1) hstar(p_opcg2_b_c) =2.7E+3 if(p_opcg3_b_c.gt.1) hstar(p_opcg3_b_c)=2.7E+3 if(p_opcg4_b_c.gt.1) hstar(p_opcg4_b_c)=2.7E+3 if(p_opcg5_b_c.gt.1) hstar(p_opcg5_b_c)=2.7E+3 if(p_opcg6_b_c.gt.1) hstar(p_opcg6_b_c)=2.7E+3 if(p_opcg7_b_c.gt.1) hstar(p_opcg7_b_c)=2.7E+3 if(p_opcg8_b_c.gt.1) hstar(p_opcg8_b_c)=2.7E+3 if(p_pcg1_b_o.gt.1) hstar(p_pcg1_b_o) =2.7E+3 if(p_pcg2_b_o.gt.1) hstar(p_pcg2_b_o) =2.7E+3 if(p_pcg3_b_o.gt.1) hstar(p_pcg3_b_o)=2.7E+3 if(p_pcg4_b_o.gt.1) hstar(p_pcg4_b_o)=2.7E+3 if(p_pcg5_b_o.gt.1) hstar(p_pcg5_b_o)=2.7E+3 if(p_pcg6_b_o.gt.1) hstar(p_pcg6_b_o)=2.7E+3 if(p_pcg7_b_o.gt.1) hstar(p_pcg7_b_o)=2.7E+3 if(p_pcg8_b_o.gt.1) hstar(p_pcg8_b_o)=2.7E+3 if(p_pcg9_b_o.gt.1) hstar(p_pcg9_b_o)=2.7E+3 if(p_opcg1_b_o.gt.1) hstar(p_opcg1_b_o) =2.7E+3 if(p_opcg2_b_o.gt.1) hstar(p_opcg2_b_o) =2.7E+3 if(p_opcg3_b_o.gt.1) hstar(p_opcg3_b_o)=2.7E+3 if(p_opcg4_b_o.gt.1) hstar(p_opcg4_b_o)=2.7E+3 if(p_opcg5_b_o.gt.1) hstar(p_opcg5_b_o)=2.7E+3 if(p_opcg6_b_o.gt.1) hstar(p_opcg6_b_o)=2.7E+3 if(p_opcg7_b_o.gt.1) hstar(p_opcg7_b_o)=2.7E+3 if(p_opcg8_b_o.gt.1) hstar(p_opcg8_b_o)=2.7E+3 if(p_pcg1_f_c.gt.1) hstar(p_pcg1_f_c) =2.7E+3 if(p_pcg2_f_c.gt.1) hstar(p_pcg2_f_c) =2.7E+3 if(p_pcg3_f_c.gt.1) hstar(p_pcg3_f_c)=2.7E+3 if(p_pcg4_f_c.gt.1) hstar(p_pcg4_f_c)=2.7E+3 if(p_pcg5_f_c.gt.1) hstar(p_pcg5_f_c)=2.7E+3 if(p_pcg6_f_c.gt.1) hstar(p_pcg6_f_c)=2.7E+3 if(p_pcg7_f_c.gt.1) hstar(p_pcg7_f_c)=2.7E+3 if(p_pcg8_f_c.gt.1) hstar(p_pcg8_f_c)=2.7E+3 if(p_pcg9_f_c.gt.1) hstar(p_pcg9_f_c)=2.7E+3 if(p_opcg1_f_c.gt.1) hstar(p_opcg1_f_c) =2.7E+3 if(p_opcg2_f_c.gt.1) hstar(p_opcg2_f_c) =2.7E+3 if(p_opcg3_f_c.gt.1) hstar(p_opcg3_f_c)=2.7E+3 if(p_opcg4_f_c.gt.1) hstar(p_opcg4_f_c)=2.7E+3 if(p_opcg5_f_c.gt.1) hstar(p_opcg5_f_c)=2.7E+3 if(p_opcg6_f_c.gt.1) hstar(p_opcg6_f_c)=2.7E+3 if(p_opcg7_f_c.gt.1) hstar(p_opcg7_f_c)=2.7E+3 if(p_opcg8_f_c.gt.1) hstar(p_opcg8_f_c)=2.7E+3 if(p_pcg1_f_o.gt.1) hstar(p_pcg1_f_o) =2.7E+3 if(p_pcg2_f_o.gt.1) hstar(p_pcg2_f_o) =2.7E+3 if(p_pcg3_f_o.gt.1) hstar(p_pcg3_f_o)=2.7E+3 if(p_pcg4_f_o.gt.1) hstar(p_pcg4_f_o)=2.7E+3 if(p_pcg5_f_o.gt.1) hstar(p_pcg5_f_o)=2.7E+3 if(p_pcg6_f_o.gt.1) hstar(p_pcg6_f_o)=2.7E+3 if(p_pcg7_f_o.gt.1) hstar(p_pcg7_f_o)=2.7E+3 if(p_pcg8_f_o.gt.1) hstar(p_pcg8_f_o)=2.7E+3 if(p_pcg9_f_o.gt.1) hstar(p_pcg9_f_o)=2.7E+3 if(p_opcg1_f_o.gt.1) hstar(p_opcg1_f_o) =2.7E+3 if(p_opcg2_f_o.gt.1) hstar(p_opcg2_f_o) =2.7E+3 if(p_opcg3_f_o.gt.1) hstar(p_opcg3_f_o)=2.7E+3 if(p_opcg4_f_o.gt.1) hstar(p_opcg4_f_o)=2.7E+3 if(p_opcg5_f_o.gt.1) hstar(p_opcg5_f_o)=2.7E+3 if(p_opcg6_f_o.gt.1) hstar(p_opcg6_f_o)=2.7E+3 if(p_opcg7_f_o.gt.1) hstar(p_opcg7_f_o)=2.7E+3 if(p_opcg8_f_o.gt.1) hstar(p_opcg8_f_o)=2.7E+3 if(p_ant1_c.gt.1) hstar(p_ant1_c)=2.7E+3 if(p_ant2_c.gt.1) hstar(p_ant2_c)=2.7E+3 if(p_ant3_c.gt.1) hstar(p_ant3_c)=2.7E+3 if(p_ant4_c.gt.1) hstar(p_ant4_c)=2.7E+3 if(p_ant1_o.gt.1) hstar(p_ant1_o)=2.7E+3 if(p_ant2_o.gt.1) hstar(p_ant2_o)=2.7E+3 if(p_ant3_o.gt.1) hstar(p_ant3_o)=2.7E+3 if(p_ant4_o.gt.1) hstar(p_ant4_o)=2.7E+3 if(p_biog1_c.gt.1) hstar(p_biog1_c)=2.7E+3 if(p_biog2_c.gt.1) hstar(p_biog2_c)=2.7E+3 if(p_biog3_c.gt.1) hstar(p_biog3_c)=2.7E+3 if(p_biog4_c.gt.1) hstar(p_biog4_c)=2.7E+3 if(p_biog1_o.gt.1) hstar(p_biog1_o)=2.7E+3 if(p_biog2_o.gt.1) hstar(p_biog2_o)=2.7E+3 if(p_biog3_o.gt.1) hstar(p_biog3_o)=2.7E+3 if(p_biog4_o.gt.1) hstar(p_biog4_o)=2.7E+3 if(p_pcg1_b_c.gt.1) dhr(p_pcg1_b_c) =6.4E+3 if(p_pcg2_b_c.gt.1) dhr(p_pcg2_b_c) =6.4E+3 if(p_pcg3_b_c.gt.1) dhr(p_pcg3_b_c)=6.4E+3 if(p_pcg4_b_c.gt.1) dhr(p_pcg4_b_c)=6.4E+3 if(p_pcg5_b_c.gt.1) dhr(p_pcg5_b_c)=6.4E+3 if(p_pcg6_b_c.gt.1) dhr(p_pcg6_b_c)=6.4E+3 if(p_pcg7_b_c.gt.1) dhr(p_pcg7_b_c)=6.4E+3 if(p_pcg8_b_c.gt.1) dhr(p_pcg8_b_c)=6.4E+3 if(p_pcg9_b_c.gt.1) dhr(p_pcg9_b_c)=6.4E+3 if(p_opcg1_b_c.gt.1) dhr(p_opcg1_b_c) =6.4E+3 if(p_opcg2_b_c.gt.1) dhr(p_opcg2_b_c) =6.4E+3 if(p_opcg3_b_c.gt.1) dhr(p_opcg3_b_c)=6.4E+3 if(p_opcg4_b_c.gt.1) dhr(p_opcg4_b_c)=6.4E+3 if(p_opcg5_b_c.gt.1) dhr(p_opcg5_b_c)=6.4E+3 if(p_opcg6_b_c.gt.1) dhr(p_opcg6_b_c)=6.4E+3 if(p_opcg7_b_c.gt.1) dhr(p_opcg7_b_c)=6.4E+3 if(p_opcg8_b_c.gt.1) dhr(p_opcg8_b_c)=6.4E+3 if(p_pcg1_b_o.gt.1) dhr(p_pcg1_b_o) =6.4E+3 if(p_pcg2_b_o.gt.1) dhr(p_pcg2_b_o) =6.4E+3 if(p_pcg3_b_o.gt.1) dhr(p_pcg3_b_o)=6.4E+3 if(p_pcg4_b_o.gt.1) dhr(p_pcg4_b_o)=6.4E+3 if(p_pcg5_b_o.gt.1) dhr(p_pcg5_b_o)=6.4E+3 if(p_pcg6_b_o.gt.1) dhr(p_pcg6_b_o)=6.4E+3 if(p_pcg7_b_o.gt.1) dhr(p_pcg7_b_o)=6.4E+3 if(p_pcg8_b_o.gt.1) dhr(p_pcg8_b_o)=6.4E+3 if(p_pcg9_b_o.gt.1) dhr(p_pcg9_b_o)=6.4E+3 if(p_opcg1_b_o.gt.1) dhr(p_opcg1_b_o) =6.4E+3 if(p_opcg2_b_o.gt.1) dhr(p_opcg2_b_o) =6.4E+3 if(p_opcg3_b_o.gt.1) dhr(p_opcg3_b_o)=6.4E+3 if(p_opcg4_b_o.gt.1) dhr(p_opcg4_b_o)=6.4E+3 if(p_opcg5_b_o.gt.1) dhr(p_opcg5_b_o)=6.4E+3 if(p_opcg6_b_o.gt.1) dhr(p_opcg6_b_o)=6.4E+3 if(p_opcg7_b_o.gt.1) dhr(p_opcg7_b_o)=6.4E+3 if(p_opcg8_b_o.gt.1) dhr(p_opcg8_b_o)=6.4E+3 if(p_pcg1_f_c.gt.1) dhr(p_pcg1_f_c) =6.4E+3 if(p_pcg2_f_c.gt.1) dhr(p_pcg2_f_c) =6.4E+3 if(p_pcg3_f_c.gt.1) dhr(p_pcg3_f_c)=6.4E+3 if(p_pcg4_f_c.gt.1) dhr(p_pcg4_f_c)=6.4E+3 if(p_pcg5_f_c.gt.1) dhr(p_pcg5_f_c)=6.4E+3 if(p_pcg6_f_c.gt.1) dhr(p_pcg6_f_c)=6.4E+3 if(p_pcg7_f_c.gt.1) dhr(p_pcg7_f_c)=6.4E+3 if(p_pcg8_f_c.gt.1) dhr(p_pcg8_f_c)=6.4E+3 if(p_pcg9_f_c.gt.1) dhr(p_pcg9_f_c)=6.4E+3 if(p_opcg1_f_c.gt.1) dhr(p_opcg1_f_c) =6.4E+3 if(p_opcg2_f_c.gt.1) dhr(p_opcg2_f_c) =6.4E+3 if(p_opcg3_f_c.gt.1) dhr(p_opcg3_f_c)=6.4E+3 if(p_opcg4_f_c.gt.1) dhr(p_opcg4_f_c)=6.4E+3 if(p_opcg5_f_c.gt.1) dhr(p_opcg5_f_c)=6.4E+3 if(p_opcg6_f_c.gt.1) dhr(p_opcg6_f_c)=6.4E+3 if(p_opcg7_f_c.gt.1) dhr(p_opcg7_f_c)=6.4E+3 if(p_opcg8_f_c.gt.1) dhr(p_opcg8_f_c)=6.4E+3 if(p_pcg1_f_o.gt.1) dhr(p_pcg1_f_o) =6.4E+3 if(p_pcg2_f_o.gt.1) dhr(p_pcg2_f_o) =6.4E+3 if(p_pcg3_f_o.gt.1) dhr(p_pcg3_f_o)=6.4E+3 if(p_pcg4_f_o.gt.1) dhr(p_pcg4_f_o)=6.4E+3 if(p_pcg5_f_o.gt.1) dhr(p_pcg5_f_o)=6.4E+3 if(p_pcg6_f_o.gt.1) dhr(p_pcg6_f_o)=6.4E+3 if(p_pcg7_f_o.gt.1) dhr(p_pcg7_f_o)=6.4E+3 if(p_pcg8_f_o.gt.1) dhr(p_pcg8_f_o)=6.4E+3 if(p_pcg9_f_o.gt.1) dhr(p_pcg9_f_o)=6.4E+3 if(p_opcg1_f_o.gt.1) dhr(p_opcg1_f_o) =6.4E+3 if(p_opcg2_f_o.gt.1) dhr(p_opcg2_f_o) =6.4E+3 if(p_opcg3_f_o.gt.1) dhr(p_opcg3_f_o)=6.4E+3 if(p_opcg4_f_o.gt.1) dhr(p_opcg4_f_o)=6.4E+3 if(p_opcg5_f_o.gt.1) dhr(p_opcg5_f_o)=6.4E+3 if(p_opcg6_f_o.gt.1) dhr(p_opcg6_f_o)=6.4E+3 if(p_opcg7_f_o.gt.1) dhr(p_opcg7_f_o)=6.4E+3 if(p_opcg8_f_o.gt.1) dhr(p_opcg8_f_o)=6.4E+3 if(p_ant1_c.gt.1) dhr(p_ant1_c)=6.4E+3 if(p_ant2_c.gt.1) dhr(p_ant2_c)=6.4E+3 if(p_ant3_c.gt.1) dhr(p_ant3_c)=6.4E+3 if(p_ant4_c.gt.1) dhr(p_ant4_c)=6.4E+3 if(p_ant1_o.gt.1) dhr(p_ant1_o)=6.4E+3 if(p_ant2_o.gt.1) dhr(p_ant2_o)=6.4E+3 if(p_ant3_o.gt.1) dhr(p_ant3_o)=6.4E+3 if(p_ant4_o.gt.1) dhr(p_ant4_o)=6.4E+3 if(p_biog1_c.gt.1) dhr(p_biog1_c)=6.4E+3 if(p_biog2_c.gt.1) dhr(p_biog2_c)=6.4E+3 if(p_biog3_c.gt.1) dhr(p_biog3_c)=6.4E+3 if(p_biog4_c.gt.1) dhr(p_biog4_c)=6.4E+3 if(p_biog1_o.gt.1) dhr(p_biog1_o)=6.4E+3 if(p_biog2_o.gt.1) dhr(p_biog2_o)=6.4E+3 if(p_biog3_o.gt.1) dhr(p_biog3_o)=6.4E+3 if(p_biog4_o.gt.1) dhr(p_biog4_o)=6.4E+3 !Assume reactivity =0 for SOA species if(p_pcg1_b_c.gt.1) f0(p_pcg1_b_c) =0.0000 if(p_pcg2_b_c.gt.1) f0(p_pcg2_b_c) =0.0000 if(p_pcg3_b_c.gt.1) f0(p_pcg3_b_c)=0.0000 if(p_pcg4_b_c.gt.1) f0(p_pcg4_b_c)=0.0000 if(p_pcg5_b_c.gt.1) f0(p_pcg5_b_c)=0.0000 if(p_pcg6_b_c.gt.1) f0(p_pcg6_b_c)=0.0000 if(p_pcg7_b_c.gt.1) f0(p_pcg7_b_c)=0.0000 if(p_pcg8_b_c.gt.1) f0(p_pcg8_b_c)=0.0000 if(p_pcg9_b_c.gt.1) f0(p_pcg9_b_c)=0.0000 if(p_opcg1_b_c.gt.1) f0(p_opcg1_b_c) =0.0000 if(p_opcg2_b_c.gt.1) f0(p_opcg2_b_c) =0.0000 if(p_opcg3_b_c.gt.1) f0(p_opcg3_b_c)=0.0000 if(p_opcg4_b_c.gt.1) f0(p_opcg4_b_c)=0.0000 if(p_opcg5_b_c.gt.1) f0(p_opcg5_b_c)=0.0000 if(p_opcg6_b_c.gt.1) f0(p_opcg6_b_c)=0.0000 if(p_opcg7_b_c.gt.1) f0(p_opcg7_b_c)=0.0000 if(p_opcg8_b_c.gt.1) f0(p_opcg8_b_c)=0.0000 if(p_pcg1_b_o.gt.1) f0(p_pcg1_b_o) =0.0000 if(p_pcg2_b_o.gt.1) f0(p_pcg2_b_o) =0.0000 if(p_pcg3_b_o.gt.1) f0(p_pcg3_b_o)=0.0000 if(p_pcg4_b_o.gt.1) f0(p_pcg4_b_o)=0.0000 if(p_pcg5_b_o.gt.1) f0(p_pcg5_b_o)=0.0000 if(p_pcg6_b_o.gt.1) f0(p_pcg6_b_o)=0.0000 if(p_pcg7_b_o.gt.1) f0(p_pcg7_b_o)=0.0000 if(p_pcg8_b_o.gt.1) f0(p_pcg8_b_o)=0.0000 if(p_pcg9_b_o.gt.1) f0(p_pcg9_b_o)=0.0000 if(p_opcg1_b_o.gt.1) f0(p_opcg1_b_o) =0.0000 if(p_opcg2_b_o.gt.1) f0(p_opcg2_b_o) =0.0000 if(p_opcg3_b_o.gt.1) f0(p_opcg3_b_o)=0.0000 if(p_opcg4_b_o.gt.1) f0(p_opcg4_b_o)=0.0000 if(p_opcg5_b_o.gt.1) f0(p_opcg5_b_o)=0.0000 if(p_opcg6_b_o.gt.1) f0(p_opcg6_b_o)=0.0000 if(p_opcg7_b_o.gt.1) f0(p_opcg7_b_o)=0.0000 if(p_opcg8_b_o.gt.1) f0(p_opcg8_b_o)=0.0000 if(p_pcg1_f_c.gt.1) f0(p_pcg1_f_c) =0.0000 if(p_pcg2_f_c.gt.1) f0(p_pcg2_f_c) =0.0000 if(p_pcg3_f_c.gt.1) f0(p_pcg3_f_c)=0.0000 if(p_pcg4_f_c.gt.1) f0(p_pcg4_f_c)=0.0000 if(p_pcg5_f_c.gt.1) f0(p_pcg5_f_c)=0.0000 if(p_pcg6_f_c.gt.1) f0(p_pcg6_f_c)=0.0000 if(p_pcg7_f_c.gt.1) f0(p_pcg7_f_c)=0.0000 if(p_pcg8_f_c.gt.1) f0(p_pcg8_f_c)=0.0000 if(p_pcg9_f_c.gt.1) f0(p_pcg9_f_c)=0.0000 if(p_opcg1_f_c.gt.1) f0(p_opcg1_f_c) =0.0000 if(p_opcg2_f_c.gt.1) f0(p_opcg2_f_c) =0.0000 if(p_opcg3_f_c.gt.1) f0(p_opcg3_f_c)=0.0000 if(p_opcg4_f_c.gt.1) f0(p_opcg4_f_c)=0.0000 if(p_opcg5_f_c.gt.1) f0(p_opcg5_f_c)=0.0000 if(p_opcg6_f_c.gt.1) f0(p_opcg6_f_c)=0.0000 if(p_opcg7_f_c.gt.1) f0(p_opcg7_f_c)=0.0000 if(p_opcg8_f_c.gt.1) f0(p_opcg8_f_c)=0.0000 if(p_pcg1_f_o.gt.1) f0(p_pcg1_f_o) =0.0000 if(p_pcg2_f_o.gt.1) f0(p_pcg2_f_o) =0.0000 if(p_pcg3_f_o.gt.1) f0(p_pcg3_f_o)=0.0000 if(p_pcg4_f_o.gt.1) f0(p_pcg4_f_o)=0.0000 if(p_pcg5_f_o.gt.1) f0(p_pcg5_f_o)=0.0000 if(p_pcg6_f_o.gt.1) f0(p_pcg6_f_o)=0.0000 if(p_pcg7_f_o.gt.1) f0(p_pcg7_f_o)=0.0000 if(p_pcg8_f_o.gt.1) f0(p_pcg8_f_o)=0.0000 if(p_pcg9_f_o.gt.1) f0(p_pcg9_f_o)=0.0000 if(p_opcg1_f_o.gt.1) f0(p_opcg1_f_o) =0.0000 if(p_opcg2_f_o.gt.1) f0(p_opcg2_f_o) =0.0000 if(p_opcg3_f_o.gt.1) f0(p_opcg3_f_o)=0.0000 if(p_opcg4_f_o.gt.1) f0(p_opcg4_f_o)=0.0000 if(p_opcg5_f_o.gt.1) f0(p_opcg5_f_o)=0.0000 if(p_opcg6_f_o.gt.1) f0(p_opcg6_f_o)=0.0000 if(p_opcg7_f_o.gt.1) f0(p_opcg7_f_o)=0.0000 if(p_opcg8_f_o.gt.1) f0(p_opcg8_f_o)=0.0000 if(p_ant1_c.gt.1) f0(p_ant1_c)=0.0000 if(p_ant2_c.gt.1) f0(p_ant2_c)=0.0000 if(p_ant3_c.gt.1) f0(p_ant3_c)=0.0000 if(p_ant4_c.gt.1) f0(p_ant4_c)=0.0000 if(p_ant1_o.gt.1) f0(p_ant1_o)=0.0000 if(p_ant2_o.gt.1) f0(p_ant2_o)=0.0000 if(p_ant3_o.gt.1) f0(p_ant3_o)=0.0000 if(p_ant4_o.gt.1) f0(p_ant4_o)=0.0000 if(p_biog1_c.gt.1) f0(p_biog1_c)=0.0000 if(p_biog2_c.gt.1) f0(p_biog2_c)=0.0000 if(p_biog3_c.gt.1) f0(p_biog3_c)=0.0000 if(p_biog4_c.gt.1) f0(p_biog4_c)=0.0000 if(p_biog1_o.gt.1) f0(p_biog1_o)=0.0000 if(p_biog2_o.gt.1) f0(p_biog2_o)=0.0000 if(p_biog3_o.gt.1) f0(p_biog3_o)=0.0000 if(p_biog4_o.gt.1) f0(p_biog4_o)=0.0000 !Diffusion coefficients of SOA species if(p_pcg1_b_c.gt.1) dvj(p_pcg1_b_c) =1.0E-1 if(p_pcg2_b_c.gt.1) dvj(p_pcg2_b_c) =1.0E-1 if(p_pcg3_b_c.gt.1) dvj(p_pcg3_b_c)=1.0E-1 if(p_pcg4_b_c.gt.1) dvj(p_pcg4_b_c)=1.0E-1 if(p_pcg5_b_c.gt.1) dvj(p_pcg5_b_c)=1.0E-1 if(p_pcg6_b_c.gt.1) dvj(p_pcg6_b_c)=1.0E-1 if(p_pcg7_b_c.gt.1) dvj(p_pcg7_b_c)=1.0E-1 if(p_pcg8_b_c.gt.1) dvj(p_pcg8_b_c)=1.0E-1 if(p_pcg9_b_c.gt.1) dvj(p_pcg9_b_c)=1.0E-1 if(p_opcg1_b_c.gt.1) dvj(p_opcg1_b_c) =1.0E-1 if(p_opcg2_b_c.gt.1) dvj(p_opcg2_b_c) =1.0E-1 if(p_opcg3_b_c.gt.1) dvj(p_opcg3_b_c)=1.0E-1 if(p_opcg4_b_c.gt.1) dvj(p_opcg4_b_c)=1.0E-1 if(p_opcg5_b_c.gt.1) dvj(p_opcg5_b_c)=1.0E-1 if(p_opcg6_b_c.gt.1) dvj(p_opcg6_b_c)=1.0E-1 if(p_opcg7_b_c.gt.1) dvj(p_opcg7_b_c)=1.0E-1 if(p_opcg8_b_c.gt.1) dvj(p_opcg8_b_c)=1.0E-1 if(p_pcg1_b_o.gt.1) dvj(p_pcg1_b_o) =1.0E-1 if(p_pcg2_b_o.gt.1) dvj(p_pcg2_b_o) =1.0E-1 if(p_pcg3_b_o.gt.1) dvj(p_pcg3_b_o)=1.0E-1 if(p_pcg4_b_o.gt.1) dvj(p_pcg4_b_o)=1.0E-1 if(p_pcg5_b_o.gt.1) dvj(p_pcg5_b_o)=1.0E-1 if(p_pcg6_b_o.gt.1) dvj(p_pcg6_b_o)=1.0E-1 if(p_pcg7_b_o.gt.1) dvj(p_pcg7_b_o)=1.0E-1 if(p_pcg8_b_o.gt.1) dvj(p_pcg8_b_o)=1.0E-1 if(p_pcg9_b_o.gt.1) dvj(p_pcg9_b_o)=1.0E-1 if(p_opcg1_b_o.gt.1) dvj(p_opcg1_b_o) =1.0E-1 if(p_opcg2_b_o.gt.1) dvj(p_opcg2_b_o) =1.0E-1 if(p_opcg3_b_o.gt.1) dvj(p_opcg3_b_o)=1.0E-1 if(p_opcg4_b_o.gt.1) dvj(p_opcg4_b_o)=1.0E-1 if(p_opcg5_b_o.gt.1) dvj(p_opcg5_b_o)=1.0E-1 if(p_opcg6_b_o.gt.1) dvj(p_opcg6_b_o)=1.0E-1 if(p_opcg7_b_o.gt.1) dvj(p_opcg7_b_o)=1.0E-1 if(p_opcg8_b_o.gt.1) dvj(p_opcg8_b_o)=1.0E-1 if(p_pcg1_f_c.gt.1) dvj(p_pcg1_f_c) =1.0E-1 if(p_pcg2_f_c.gt.1) dvj(p_pcg2_f_c) =1.0E-1 if(p_pcg3_f_c.gt.1) dvj(p_pcg3_f_c)=1.0E-1 if(p_pcg4_f_c.gt.1) dvj(p_pcg4_f_c)=1.0E-1 if(p_pcg5_f_c.gt.1) dvj(p_pcg5_f_c)=1.0E-1 if(p_pcg6_f_c.gt.1) dvj(p_pcg6_f_c)=1.0E-1 if(p_pcg7_f_c.gt.1) dvj(p_pcg7_f_c)=1.0E-1 if(p_pcg8_f_c.gt.1) dvj(p_pcg8_f_c)=1.0E-1 if(p_pcg9_f_c.gt.1) dvj(p_pcg9_f_c)=1.0E-1 if(p_opcg1_f_c.gt.1) dvj(p_opcg1_f_c) =1.0E-1 if(p_opcg2_f_c.gt.1) dvj(p_opcg2_f_c) =1.0E-1 if(p_opcg3_f_c.gt.1) dvj(p_opcg3_f_c)=1.0E-1 if(p_opcg4_f_c.gt.1) dvj(p_opcg4_f_c)=1.0E-1 if(p_opcg5_f_c.gt.1) dvj(p_opcg5_f_c)=1.0E-1 if(p_opcg6_f_c.gt.1) dvj(p_opcg6_f_c)=1.0E-1 if(p_opcg7_f_c.gt.1) dvj(p_opcg7_f_c)=1.0E-1 if(p_opcg8_f_c.gt.1) dvj(p_opcg8_f_c)=1.0E-1 if(p_pcg1_f_o.gt.1) dvj(p_pcg1_f_o) =1.0E-1 if(p_pcg2_f_o.gt.1) dvj(p_pcg2_f_o) =1.0E-1 if(p_pcg3_f_o.gt.1) dvj(p_pcg3_f_o)=1.0E-1 if(p_pcg4_f_o.gt.1) dvj(p_pcg4_f_o)=1.0E-1 if(p_pcg5_f_o.gt.1) dvj(p_pcg5_f_o)=1.0E-1 if(p_pcg6_f_o.gt.1) dvj(p_pcg6_f_o)=1.0E-1 if(p_pcg7_f_o.gt.1) dvj(p_pcg7_f_o)=1.0E-1 if(p_pcg8_f_o.gt.1) dvj(p_pcg8_f_o)=1.0E-1 if(p_pcg9_f_o.gt.1) dvj(p_pcg9_f_o)=1.0E-1 if(p_opcg1_f_o.gt.1) dvj(p_opcg1_f_o) =1.0E-1 if(p_opcg2_f_o.gt.1) dvj(p_opcg2_f_o) =1.0E-1 if(p_opcg3_f_o.gt.1) dvj(p_opcg3_f_o)=1.0E-1 if(p_opcg4_f_o.gt.1) dvj(p_opcg4_f_o)=1.0E-1 if(p_opcg5_f_o.gt.1) dvj(p_opcg5_f_o)=1.0E-1 if(p_opcg6_f_o.gt.1) dvj(p_opcg6_f_o)=1.0E-1 if(p_opcg7_f_o.gt.1) dvj(p_opcg7_f_o)=1.0E-1 if(p_opcg8_f_o.gt.1) dvj(p_opcg8_f_o)=1.0E-1 if(p_ant1_c.gt.1) dvj(p_ant1_c)=1.0E-1 if(p_ant2_c.gt.1) dvj(p_ant2_c)=1.0E-1 if(p_ant3_c.gt.1) dvj(p_ant3_c)=1.0E-1 if(p_ant4_c.gt.1) dvj(p_ant4_c)=1.0E-1 if(p_ant1_o.gt.1) dvj(p_ant1_o)=1.0E-1 if(p_ant2_o.gt.1) dvj(p_ant2_o)=1.0E-1 if(p_ant3_o.gt.1) dvj(p_ant3_o)=1.0E-1 if(p_ant4_o.gt.1) dvj(p_ant4_o)=1.0E-1 if(p_biog1_c.gt.1) dvj(p_biog1_c)=1.0E-1 if(p_biog2_c.gt.1) dvj(p_biog2_c)=1.0E-1 if(p_biog3_c.gt.1) dvj(p_biog3_c)=1.0E-1 if(p_biog4_c.gt.1) dvj(p_biog4_c)=1.0E-1 if(p_biog1_o.gt.1) dvj(p_biog1_o)=1.0E-1 if(p_biog2_o.gt.1) dvj(p_biog2_o)=1.0E-1 if(p_biog3_o.gt.1) dvj(p_biog3_o)=1.0E-1 if(p_biog4_o.gt.1) dvj(p_biog4_o)=1.0E-1 DO l = 1, numgas hstar4(l) = hstar(l) ! preliminary !-------------------------------------------------- ! Correction of diff. coefficient !-------------------------------------------------- dvj(l) = dvj(l)*(293.15/298.15)**1.75 sc = 0.15/dvj(l) ! Schmidt Number at 20C dratio(l) = 0.242/dvj(l) ! of water vapor and gas at !-------------------------------------------------- ! Ratio of diffusion coefficient !-------------------------------------------------- scpr23(l) = (sc/0.72)**(2./3.) ! (Schmidt # / Prandtl #)** END DO ! start of addition else if ( (config_flags%chem_opt == CB05_SORG_AQ_KPP) ) then is_cbm4_kpp hstar(p_no2) = 6.40E-3 hstar(p_no) = 1.90E-3 hstar(p_pan) = 2.97E+0 hstar(p_o3) = 1.13E-2 hstar(p_form) = 2.97E+3 hstar(p_cxo3) = 1.14E+1 hstar(p_hono) = 3.47E+5 hstar(p_no3) = 1.50E+1 hstar(p_pna) = 2.00E+13 hstar(p_h2o2) = 7.45E+4 hstar(p_co) = 8.20E-3 hstar(p_ald2) = 1.14E+1 hstar(p_aldx) = 1.14E+1 hstar(p_mepx) = 2.21E+2 hstar(p_rooh) = 1.68E+6 hstar(p_pacd) = 4.73E+2 hstar(p_mgly) = 3.71E+3 hstar(p_ntr) = 1.13E+0 hstar(p_so2) = 2.53E+5 hstar(p_etha) = 2.00E-3 hstar(p_ole) = 4.76E-3 hstar(p_iole) = 1.35E-3 hstar(p_tol) = 1.51E-1 hstar(p_cres) = 4.00E+5 hstar(p_xyl) = 1.45E-1 hstar(p_isop) = 4.76E-3 hstar(p_hno3) = 2.69E+13 hstar(p_facd) = 9.85E+6 hstar(p_aacd) = 9.63E+5 hstar(p_nh3) = 1.04E+4 hstar(p_n2o5) = 1.00E+10 hstar(p_eth) = 4.67E-3 hstar(p_par) = 1.13E-3 !wig, 1-May-2007: for CB05 dhr(p_no2) = 2500. dhr(p_no) = 1480. dhr(p_pan) = 5760. dhr(p_o3) = 2300. dhr(p_form) = 7190. dhr(p_cxo3) = 6266. dhr(p_hono) = 3775. dhr(p_no3) = 0. dhr(p_pna) = 0. dhr(p_h2o2) = 6615. dhr(p_co) = 0. dhr(p_ald2) = 6266. dhr(p_aldx) = 6266. dhr(p_mepx) = 5607. dhr(p_rooh) = 10240. dhr(p_pacd) = 6170. dhr(p_mgly) = 7541. dhr(p_ntr) = 5487. dhr(p_so2) = 5816. dhr(p_etha) = 0. dhr(p_ole) = 0. dhr(p_iole) = 0. dhr(p_tol) = 0. dhr(p_cres) = 0. dhr(p_xyl) = 0. dhr(p_isop) = 0. dhr(p_hno3) = 8684. dhr(p_facd) = 5716. dhr(p_aacd) = 8374. dhr(p_nh3) = 3660. dhr(p_n2o5) = 0. dhr(p_eth) = 0. dhr(p_par) = 0. !wig, 1-May-2007: for CB05 f0(p_no2) = 0.1 f0(p_no) = 0. f0(p_pan) = 0.1 f0(p_o3) = 1. f0(p_form) = 0. f0(p_cxo3) = 1. f0(p_hono) = 0.1 f0(p_no3) = 1. f0(p_pna) = 0.1 f0(p_h2o2) = 1. f0(p_co) = 0. f0(p_ald2) = 0. f0(p_aldx) = 0. f0(p_mepx) = 0.1 f0(p_rooh) = 0.1 f0(p_pacd) = 0.1 f0(p_mgly) = 0. f0(p_ntr) = 0. f0(p_so2) = 0. f0(p_etha) = 0. f0(p_ole) = 0. f0(p_iole) = 0. f0(p_tol) = 0. f0(p_cres) = 0. f0(p_xyl) = 0. f0(p_isop) = 0. f0(p_hno3) = 0. f0(p_facd) = 0. f0(p_aacd) = 0. f0(p_nh3) = 0. f0(p_n2o5) = 1. f0(p_eth) = 0. f0(p_par) = 0. !wig, 1-May-2007: for CB05 dvj(p_no2) = 0.147 dvj(p_no) = 0.183 dvj(p_pan) = 0.091 dvj(p_o3) = 0.175 dvj(p_form) = 0.183 dvj(p_cxo3) = 0.115 dvj(p_hono) = 0.153 dvj(p_no3) = 0.127 dvj(p_pna) = 0.113 dvj(p_h2o2) = 0.171 dvj(p_co) = 0.189 dvj(p_ald2) = 0.151 dvj(p_aldx) = 0.151 dvj(p_mepx) = 0.144 dvj(p_rooh) = 0.127 dvj(p_pacd) = 0.115 dvj(p_mgly) = 0.118 dvj(p_ntr) = 0.092 dvj(p_so2) = 0.126 dvj(p_etha) = 0.183 dvj(p_ole) = 0.154 dvj(p_iole) = 0.121 dvj(p_tol) = 0.104 dvj(p_cres) = 0.096 dvj(p_xyl) = 0.097 dvj(p_isop) = 0.121 dvj(p_hno3) = 0.126 dvj(p_facd) = 0.153 dvj(p_aacd) = 0.124 dvj(p_nh3) = 0.227 dvj(p_n2o5) = 0.110 dvj(p_ho) = 0.243 dvj(p_ho2) = 0.174 dvj(p_eth) = 0.189 dvj(p_par) = 0.118 !wig, 1-May-2007: for CB05 DO l = 1, numgas hstar4(l) = hstar(l) ! preliminary ! Correction of diff. coeff dvj(l) = dvj(l)*(293.15/298.15)**1.75 sc = 0.15/dvj(l) ! Schmidt Number at 20degC dratio(l) = 0.242/dvj(l) ! ! of water vapor and gas at ! Ratio of diffusion coeffi scpr23(l) = (sc/0.72)**(2./3.) ! (Schmidt # / Prandtl #)** END DO else if ( (config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP) ) then is_cbm4_kpp hstar(p_no2) = 6.40E-3 hstar(p_no) = 1.90E-3 hstar(p_pan) = 2.97E+0 hstar(p_o3) = 1.13E-2 hstar(p_form) = 2.97E+3 hstar(p_cxo3) = 1.14E+1 hstar(p_hono) = 3.47E+5 hstar(p_no3) = 1.50E+1 hstar(p_pna) = 2.00E+13 hstar(p_h2o2) = 7.45E+4 hstar(p_co) = 8.20E-3 hstar(p_ald2) = 1.14E+1 hstar(p_aldx) = 1.14E+1 hstar(p_mepx) = 2.21E+2 hstar(p_rooh) = 1.68E+6 hstar(p_pacd) = 4.73E+2 hstar(p_mgly) = 3.71E+3 hstar(p_ntr) = 1.13E+0 hstar(p_so2) = 2.53E+5 hstar(p_etha) = 2.00E-3 hstar(p_ole) = 4.76E-3 hstar(p_iole) = 1.35E-3 hstar(p_tol) = 1.51E-1 hstar(p_cres) = 4.00E+5 hstar(p_xyl) = 1.45E-1 hstar(p_isop) = 4.76E-3 hstar(p_hno3) = 2.69E+13 hstar(p_facd) = 9.85E+6 hstar(p_aacd) = 9.63E+5 hstar(p_nh3) = 1.04E+4 hstar(p_n2o5) = 1.00E+10 hstar(p_eth) = 4.67E-3 hstar(p_par) = 1.13E-3 !wig, 1-May-2007: for CB05 dhr(p_no2) = 2500. dhr(p_no) = 1480. dhr(p_pan) = 5760. dhr(p_o3) = 2300. dhr(p_form) = 7190. dhr(p_cxo3) = 6266. dhr(p_hono) = 3775. dhr(p_no3) = 0. dhr(p_pna) = 0. dhr(p_h2o2) = 6615. dhr(p_co) = 0. dhr(p_ald2) = 6266. dhr(p_aldx) = 6266. dhr(p_mepx) = 5607. dhr(p_rooh) = 10240. dhr(p_pacd) = 6170. dhr(p_mgly) = 7541. dhr(p_ntr) = 5487. dhr(p_so2) = 5816. dhr(p_etha) = 0. dhr(p_ole) = 0. dhr(p_iole) = 0. dhr(p_tol) = 0. dhr(p_cres) = 0. dhr(p_xyl) = 0. dhr(p_isop) = 0. dhr(p_hno3) = 8684. dhr(p_facd) = 5716. dhr(p_aacd) = 8374. dhr(p_nh3) = 3660. dhr(p_n2o5) = 0. dhr(p_eth) = 0. dhr(p_par) = 0. !wig, 1-May-2007: for CB05 f0(p_no2) = 0.1 f0(p_no) = 0. f0(p_pan) = 0.1 f0(p_o3) = 1. f0(p_form) = 0. f0(p_cxo3) = 1. f0(p_hono) = 0.1 f0(p_no3) = 1. f0(p_pna) = 0.1 f0(p_h2o2) = 1. f0(p_co) = 0. f0(p_ald2) = 0. f0(p_aldx) = 0. f0(p_mepx) = 0.1 f0(p_rooh) = 0.1 f0(p_pacd) = 0.1 f0(p_mgly) = 0. f0(p_ntr) = 0. f0(p_so2) = 0. f0(p_etha) = 0. f0(p_ole) = 0. f0(p_iole) = 0. f0(p_tol) = 0. f0(p_cres) = 0. f0(p_xyl) = 0. f0(p_isop) = 0. f0(p_hno3) = 0. f0(p_facd) = 0. f0(p_aacd) = 0. f0(p_nh3) = 0. f0(p_n2o5) = 1. f0(p_eth) = 0. f0(p_par) = 0. !wig, 1-May-2007: for CB05 dvj(p_no2) = 0.147 dvj(p_no) = 0.183 dvj(p_pan) = 0.091 dvj(p_o3) = 0.175 dvj(p_form) = 0.183 dvj(p_cxo3) = 0.115 dvj(p_hono) = 0.153 dvj(p_no3) = 0.127 dvj(p_pna) = 0.113 dvj(p_h2o2) = 0.171 dvj(p_co) = 0.189 dvj(p_ald2) = 0.151 dvj(p_aldx) = 0.151 dvj(p_mepx) = 0.144 dvj(p_rooh) = 0.127 dvj(p_pacd) = 0.115 dvj(p_mgly) = 0.118 dvj(p_ntr) = 0.092 dvj(p_so2) = 0.126 dvj(p_etha) = 0.183 dvj(p_ole) = 0.154 dvj(p_iole) = 0.121 dvj(p_tol) = 0.104 dvj(p_cres) = 0.096 dvj(p_xyl) = 0.097 dvj(p_isop) = 0.121 dvj(p_hno3) = 0.126 dvj(p_facd) = 0.153 dvj(p_aacd) = 0.124 dvj(p_nh3) = 0.227 dvj(p_n2o5) = 0.110 dvj(p_ho) = 0.243 dvj(p_ho2) = 0.174 dvj(p_eth) = 0.189 dvj(p_par) = 0.118 !wig, 1-May-2007: for CB05 DO l = 1, numgas hstar4(l) = hstar(l) ! preliminary ! Correction of diff. coeff dvj(l) = dvj(l)*(293.15/298.15)**1.75 sc = 0.15/dvj(l) ! Schmidt Number at 20degC dratio(l) = 0.242/dvj(l) ! ! of water vapor and gas at ! Ratio of diffusion coeffi scpr23(l) = (sc/0.72)**(2./3.) ! (Schmidt # / Prandtl #)** END DO ! end of addition else is_cbm4_kpp hstar(p_no2) = 6.40E-3 hstar(p_no) = 1.90E-3 hstar(p_pan) = 2.97E+0 hstar(p_o3) = 1.13E-2 hstar(p_hcho) = 2.97E+3 hstar(p_hono) = 3.47E+5 hstar(p_no3) = 1.50E+1 hstar(p_h2o2) = 7.45E+4 hstar(p_co) = 8.20E-3 hstar(p_ald2) = 1.14E+1 hstar(p_onit) = 1.13E+0 hstar(p_so2) = 2.53E+5 hstar(p_eth) = 2.00E-3 hstar(p_ole) = 3.05E-3 !(average of oli and olt) hstar(p_tol) = 1.51E-1 hstar(p_cres) = 4.00E+5 hstar(p_xyl) = 1.45E-1 hstar(p_iso) = 4.76E-3 hstar(p_hno3) = 2.69E+13 hstar(p_nh3) = 1.04E+4 hstar(p_n2o5) = 1.00E+10 hstar(p_par) = 1.13E-3 ! -DH/R (for temperature correction) ! [-DH/R]=K dhr(p_no2) = 2500. dhr(p_no) = 1480. dhr(p_pan) = 5760. dhr(p_o3) = 2300. dhr(p_hcho) = 7190. dhr(p_hono) = 3775. dhr(p_no3) = 0. dhr(p_h2o2) = 6615. dhr(p_co) = 0. dhr(p_ald2) = 6266. dhr(p_onit) = 5487. dhr(p_so2) = 5816. dhr(p_eth) = 0. dhr(p_ole) = 0. dhr(p_tol) = 0. dhr(p_cres) = 0. dhr(p_xyl) = 0. dhr(p_iso) = 0. dhr(p_hno3) = 8684. dhr(p_nh3) = 3660. dhr(p_n2o5) = 0. dhr(p_par) = 0. ! REACTIVITY FACTORS ! [f0]=1 f0(p_no2) = 0.1 f0(p_no) = 0. f0(p_pan) = 0.1 f0(p_o3) = 1. f0(p_hcho) = 0. f0(p_hono) = 0.1 f0(p_no3) = 1. f0(p_h2o2) = 1. f0(p_co) = 0. f0(p_ald2) = 0. f0(p_onit) = 0. f0(p_so2) = 0. f0(p_eth) = 0. f0(p_ole) = 0. f0(p_tol) = 0. f0(p_csl) = 0. f0(p_xyl) = 0. f0(p_iso) = 0. f0(p_hno3) = 0. f0(p_nh3) = 0. f0(p_n2o5) = 1. f0(p_par) = 0. ! DIFFUSION COEFFICIENTS ! [DV]=cm2/s (assumed: 1/SQRT(molar mass) when not known) dvj(p_no2) = 0.147 dvj(p_no) = 0.183 dvj(p_pan) = 0.091 dvj(p_o3) = 0.175 dvj(p_hcho) = 0.183 dvj(p_hono) = 0.153 dvj(p_no3) = 0.127 dvj(p_h2o2) = 0.171 dvj(p_co) = 0.189 dvj(p_ald2) = 0.151 dvj(p_onit) = 0.092 dvj(p_so2) = 0.126 dvj(p_eth) = 0.183 dvj(p_ole) = 0.135 dvj(p_tol) = 0.104 dvj(p_csl) = 0.096 dvj(p_xyl) = 0.097 dvj(p_iso) = 0.121 dvj(p_hno3) = 0.126 dvj(p_nh3) = 0.227 dvj(p_n2o5) = 0.110 dvj(p_par) = 0.118 DO l = 1, numgas hstar4(l) = hstar(l) ! preliminary ! Correction of diff. coeff dvj(l) = dvj(l)*(293.15/298.15)**1.75 sc = 0.15/dvj(l) ! Schmidt Number at 20C dratio(l) = 0.242/dvj(l) ! ! of water vapor and gas at ! Ratio of diffusion coeffi scpr23(l) = (sc/0.72)**(2./3.) ! (Schmidt # / Prandtl #)** end DO end if is_cbm4_kpp ! DATA FOR AEROSOL PARTICLE DEPOSITION FOR THE MODEL OF ! J. W. ERISMAN, A. VAN PUL AND P. WYERS ! ATMOSPHERIC ENVIRONMENT 28 (1994), 2595-2607 ! vd = (u* / k) * CORRECTION FACTORS ! CONSTANT K FOR LANDUSE TYPES: ! urban and built-up land kpart(1) = 500. ! dryland cropland and pasture kpart(2) = 500. ! irrigated cropland and pasture kpart(3) = 500. ! mixed dryland/irrigated cropland and past kpart(4) = 500. ! cropland/grassland mosaic kpart(5) = 500. ! cropland/woodland mosaic kpart(6) = 100. ! grassland kpart(7) = 500. ! shrubland kpart(8) = 500. ! mixed shrubland/grassland kpart(9) = 500. ! savanna kpart(10) = 500. ! deciduous broadleaf forest kpart(11) = 100. ! deciduous needleleaf forest kpart(12) = 100. ! evergreen broadleaf forest kpart(13) = 100. ! evergreen needleleaf forest kpart(14) = 100. ! mixed forest kpart(15) = 100. ! water bodies kpart(16) = 500. ! herbaceous wetland kpart(17) = 500. ! wooded wetland kpart(18) = 500. ! barren or sparsely vegetated kpart(19) = 500. ! herbaceous tundra kpart(20) = 500. ! wooded tundra kpart(21) = 100. ! mixed tundra kpart(22) = 500. ! bare ground tundra kpart(23) = 500. ! snow or ice kpart(24) = 500. ! Comments: kpart(25) = 500. ! Erisman et al. (1994) give ! k = 500 for low vegetation and k = 100 for forests. ! For desert k = 500 is taken according to measurements ! on bare soil by ! J. Fontan, A. Lopez, E. Lamaud and A. Druilhet (1997) ! Vertical Flux Measurements of the Submicronic Aerosol Particles ! and Parametrisation of the Dry Deposition Velocity ! in: Biosphere-Atmosphere Exchange of Pollutants ! and Trace Substances ! Editor: S. Slanina. Springer-Verlag Berlin, Heidelberg, 1997 ! pp. 381-390 ! For coniferous forest the Erisman value of k = 100 is taken. ! Measurements of Erisman et al. (1997) in a coniferous forest ! in the Netherlands, lead to values of k between 20 and 38 ! (Atmospheric Environment 31 (1997), 321-332). ! However, these high values of vd may be reached during ! instable cases. The eddy correlation measurements ! of Gallagher et al. (1997) made during the same experiment ! show for stable cases (L>0) values of k between 200 and 250 ! at minimum (Atmospheric Environment 31 (1997), 359-373). ! Fontan et al. (1997) found k = 250 in a forest ! of maritime pine in southwestern France. ! For gras, model calculations of Davidson et al. support ! the value of 500. ! C. I. Davidson, J. M. Miller and M. A. Pleskov ! The Influence of Surface Structure on Predicted Particles ! Dry Deposition to Natural Gras Canopies ! Water, Air, and Soil Pollution 18 (1982) 25-43 ! Snow covered surface: The experiment of Ibrahim et al. (1983) ! gives k = 436 for 0.7 um diameter particles. ! The deposition velocity of Milford and Davidson (1987) ! gives k = 154 for continental sulfate aerosol. ! M. Ibrahim, L. A. Barrie and F. Fanaki ! Atmospheric Environment 17 (1983), 781-788 ! J. B. Milford and C. I. Davidson ! The Sizes of Particulate Sulfate and Nitrate in the Atmosphere ! - A Review ! JAPCA 37 (1987), 125-134 ! no data ! WRITE (0,*) ' return from rcread ' ! ********************************************************* ! Simplified landuse scheme for deposition and biogenic emission ! subroutines ! (ISWATER and ISICE are already defined elsewhere, ! therefore water and ice are not considered here) ! 1 urban or bare soil ! 2 agricultural ! 3 grassland ! 4 deciduous forest ! 5 coniferous and mixed forest ! 6 other natural landuse categories IF (mminlu=='OLD ') THEN ixxxlu(1) = 1 ixxxlu(2) = 2 ixxxlu(3) = 3 ixxxlu(4) = 4 ixxxlu(5) = 5 ixxxlu(6) = 5 ixxxlu(7) = 0 ixxxlu(8) = 6 ixxxlu(9) = 1 ixxxlu(10) = 6 ixxxlu(11) = 0 ixxxlu(12) = 4 ixxxlu(13) = 6 END IF IF (mminlu=='USGS') THEN ixxxlu(1) = 1 ixxxlu(2) = 2 ixxxlu(3) = 2 ixxxlu(4) = 2 ixxxlu(5) = 2 ixxxlu(6) = 4 ixxxlu(7) = 3 ixxxlu(8) = 6 ixxxlu(9) = 3 ixxxlu(10) = 6 ixxxlu(11) = 4 ixxxlu(12) = 5 ixxxlu(13) = 4 ixxxlu(14) = 5 ixxxlu(15) = 5 ixxxlu(16) = 0 ixxxlu(17) = 6 ixxxlu(18) = 4 ixxxlu(19) = 1 ixxxlu(20) = 6 ixxxlu(21) = 4 ixxxlu(22) = 6 ixxxlu(23) = 1 ixxxlu(24) = 0 ixxxlu(25) = 1 END IF IF (mminlu=='SiB ') THEN ixxxlu(1) = 4 ixxxlu(2) = 4 ixxxlu(3) = 4 ixxxlu(4) = 5 ixxxlu(5) = 5 ixxxlu(6) = 6 ixxxlu(7) = 3 ixxxlu(8) = 6 ixxxlu(9) = 6 ixxxlu(10) = 6 ixxxlu(11) = 1 ixxxlu(12) = 2 ixxxlu(13) = 6 ixxxlu(14) = 1 ixxxlu(15) = 0 ixxxlu(16) = 0 ixxxlu(17) = 1 END IF #ifdef NETCDF !-------------------------------------------------- ! ... check for mozart chemistry !-------------------------------------------------- !--------------------------------------------------------------------- ! ... open wesely pft netcdf file !--------------------------------------------------------------------- is_mozart : & if( chm_is_moz ) then !--------------------------------------------------------------------- ! ... allocate column_density type !--------------------------------------------------------------------- if( id == 1 .and. .not. allocated(seasonal_pft) ) then CALL nl_get_max_dom( 1,max_dom ) allocate( seasonal_pft(max_dom),stat=astat ) if( astat /= 0 ) then CALL wrf_message( 'dep_init: failed to allocate wesely_pft type seasonal_pft' ) CALL wrf_abort endif write(err_msg,*) 'dep_init: initializing for ',max_dom,' domains' CALL wrf_message( trim(err_msg) ) seasonal_pft(:)%is_allocated = .false. endif seasonal_pft_allocated : & IF( .not. seasonal_pft(id)%is_allocated ) then IF( wrf_dm_on_monitor() ) THEN write(id_num,'(i3)') 100+id err_msg = 'dep_init: initializing domain ' // id_num(2:3) CALL wrf_message( trim(err_msg) ) cpos = index( config_flags%wes_seasonal_inname, '' ) if( cpos > 0 ) then filename = ' ' filename = config_flags%wes_seasonal_inname(:cpos-1) // 'd' // id_num(2:3) cpos = cpos + 8 slen = len_trim( config_flags%wes_seasonal_inname ) if( cpos < slen ) then filename(len_trim(filename)+1:) = config_flags%wes_seasonal_inname(cpos:slen) endif else filename = trim( config_flags%wes_seasonal_inname ) endif err_msg = 'dep_init: failed to open file ' // trim(filename) call handle_ncerr( nf_open( trim(filename), nf_noclobber, ncid ), trim(err_msg) ) !--------------------------------------------------------------------- ! ... get dimensions !--------------------------------------------------------------------- err_msg = 'dep_init: failed to get npft id' call handle_ncerr( nf_inq_dimid( ncid, 'npft', dimid ), trim(err_msg) ) err_msg = 'dep_init: failed to npft' call handle_ncerr( nf_inq_dimlen( ncid, dimid, seasonal_pft(id)%npft ), trim(err_msg) ) err_msg = 'dep_init: failed to get months year id' call handle_ncerr( nf_inq_dimid( ncid, 'months', dimid ), trim(err_msg) ) err_msg = 'dep_init: failed to get months' call handle_ncerr( nf_inq_dimlen( ncid, dimid, seasonal_pft(id)%months ), trim(err_msg) ) err_msg = 'ftuv_init: failed to get west_east id' call handle_ncerr( nf_inq_dimid( ncid, 'west_east', dimid ), trim(err_msg) ) err_msg = 'ftuv_init: failed to get west_east' call handle_ncerr( nf_inq_dimlen( ncid, dimid, lon_e ), trim(err_msg) ) err_msg = 'ftuv_init: failed to get south_north id' call handle_ncerr( nf_inq_dimid( ncid, 'south_north', dimid ), trim(err_msg) ) err_msg = 'ftuv_init: failed to get south_north' call handle_ncerr( nf_inq_dimlen( ncid, dimid, lat_e ), trim(err_msg) ) end IF !--------------------------------------------------------------------- ! ... bcast the dimensions !--------------------------------------------------------------------- CALL wrf_dm_bcast_bytes ( seasonal_pft(id)%npft , IWORDSIZE ) CALL wrf_dm_bcast_bytes ( seasonal_pft(id)%months , IWORDSIZE ) CALL wrf_dm_bcast_bytes ( lon_e , IWORDSIZE ) CALL wrf_dm_bcast_bytes ( lat_e , IWORDSIZE ) !--------------------------------------------------------------------- ! ... allocate arrays !--------------------------------------------------------------------- iend = min( ipe,ide-1 ) jend = min( jpe,jde-1 ) allocate( input_wes_seasonal(lon_e,lat_e,seasonal_pft(id)%npft,seasonal_pft(id)%months), stat=astat ) if( astat /= 0 ) then call wrf_message( 'dep_init: failed to allocate input_wes_seasonal' ) call wrf_abort end if allocate( seasonal_pft(id)%seasonal_wes(ips:iend,jps:jend,seasonal_pft(id)%npft,seasonal_pft(id)%months), stat=astat ) if( astat /= 0 ) then call wrf_message( 'dep_init: failed to allocate seasonal_wes' ) call wrf_abort end if seasonal_pft(id)%is_allocated = .true. !--------------------------------------------------------------------- ! ... read array !--------------------------------------------------------------------- IF ( wrf_dm_on_monitor() ) THEN err_msg = 'dep_init: failed to get seasonal_wes variable id' call handle_ncerr( nf_inq_varid( ncid, 'seasonal_wes', varid ), trim(err_msg) ) err_msg = 'dep_init: failed to read seasonal_wes variable' call handle_ncerr( nf_get_var_int( ncid, varid, input_wes_seasonal ), trim(err_msg) ) !--------------------------------------------------------------------- ! ... close netcdf file !--------------------------------------------------------------------- err_msg = 'dep_init: failed to close file wrf_season_wes_usgs.nc' call handle_ncerr( nf_close( ncid ), trim(err_msg) ) end if DM_BCAST_MACRO(input_wes_seasonal) seasonal_pft(id)%seasonal_wes(ips:iend,jps:jend,:seasonal_pft(id)%npft,:seasonal_pft(id)%months) = & input_wes_seasonal(ips:iend,jps:jend,:seasonal_pft(id)%npft,:seasonal_pft(id)%months) deallocate( input_wes_seasonal ) endif seasonal_pft_allocated endif is_mozart #endif END SUBROUTINE dep_init SUBROUTINE HL_init( numgas ) use module_state_description, only : param_first_scalar use module_scalar_tables, only : chem_dname_table use module_chem_utilities, only : UPCASE use module_HLawConst integer, intent(in) :: numgas !---------------------------------------------------------------------- ! local variables !---------------------------------------------------------------------- integer :: m, m1 integer :: astat character(len=64) :: HL_tbl_name character(len=64) :: wrf_spc_name is_allocated : & if( .not. allocated( HL_ndx ) ) then !---------------------------------------------------------------------- ! scan HLawConst table for match with chem_opt scheme gas phase species !---------------------------------------------------------------------- allocate( HL_ndx(numgas),stat=astat ) if( astat /= 0 ) then call wrf_error_fatal("HL_init: failed to allocate HL_ndx") endif HL_ndx(:) = 0 do m = param_first_scalar,numgas wrf_spc_name = chem_dname_table(1,m) call upcase( wrf_spc_name ) do m1 = 1,nHLC HL_tbl_name = HLC(m1)%name call upcase( HL_tbl_name ) if( trim(HL_tbl_name) == trim(wrf_spc_name) ) then HL_ndx(m) = m1 exit endif end do end do endif is_allocated END SUBROUTINE HL_init #ifdef NETCDF subroutine handle_ncerr( ret, mes ) !--------------------------------------------------------------------- ! ... netcdf error handling routine !--------------------------------------------------------------------- implicit none !--------------------------------------------------------------------- ! ... dummy arguments !--------------------------------------------------------------------- integer, intent(in) :: ret character(len=*), intent(in) :: mes include 'netcdf.inc' if( ret /= nf_noerr ) then call wrf_message( trim(mes) ) call wrf_message( trim(nf_strerror(ret)) ) call wrf_abort end if end subroutine handle_ncerr #endif END MODULE module_dep_simple