Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Registry/Registry.EM_COMMON
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ state real sct_dom_gc ij dyn_em 1 - i1 "SCT_DOM"
state real scb_dom_gc ij dyn_em 1 - i1 "SCB_DOM" "Dominant soil (bottom) category from GEOGRID" "cat"
state real greenfrac imj dyn_em 1 Z i1 "GREENFRAC" "monthly greenness fraction" "0 - 1 fraction"
state real albedo12m imj dyn_em 1 Z i1 "ALBEDO12M" "background albedo" "0 - 1 fraction"

state real lai12m imj dyn_em 1 Z i1 "LAI12M" "monthly LAI" "m2/m2"
state real pd_gc igj dyn_em 1 Z - "PD" "dry pressure" "Pa"
state real pdrho_gc igj dyn_em 1 Z - "PDRHO" "dry pressure for UM data for the variables U and V" "Pa"
Expand Down
21 changes: 20 additions & 1 deletion Registry/registry.chem
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ state real e_hcho i+jf emis_ant 1 Z i5r "E_H
state real e_ald i+jf emis_ant 1 Z i5r "E_ALD" "EMISSIONS" "mol km^-2 hr^-1"
state real e_ket i+jf emis_ant 1 Z i5r "E_KET" "EMISSIONS" "mol km^-2 hr^-1"
state real e_ora2 i+jf emis_ant 1 Z i5r "E_ORA2" "EMISSIONS" "mol km^-2 hr^-1"
state real e_nh3 i+jf emis_ant 1 Z i5r "E_NH3" "EMISSIONS" "mol km^-2 hr^-1"
state real e_nh3 i+jf emis_ant 1 Z i5rh01 "E_NH3" "EMISSIONS" "mol km^-2 hr^-1"
state real e_pm_25 i+jf emis_ant 1 Z i5r "E_PM_25" "EMISSIONS" "ug/m3 m/s"
state real e_pm_10 i+jf emis_ant 1 Z i5r "E_PM_10" "EMISSIONS" "ug/m3 m/s"
state real e_pm25i i+jf emis_ant 1 Z i5r "E_PM25I" "EMISSION RATE OF UNIDEN. PM2.5 MASS" "ug/m3 m/s"
Expand Down Expand Up @@ -670,6 +670,17 @@ state real pftp_hb ij misc 1 - i06r "pft
state real mtsa ijm misc 1 Z i06r "mtsa" "Monthly surface air temp" "K"
state real mswdown ijm misc 1 Z i06r "mswdown" "Monthly SWdown" "W/m2"
state real EFmegan ij{nm} misc 1 - - "EFmegan" "MEGAN2 Emis Factor" "ug m^-2 hr^-1"
# Arrays for online ammonia emissions
state real EFnh3 ij misc 1 - i01rh01 "EFNH3" "NH3 Emis Factor" "ug m^-2 hr^-1"
state real actnh3 imj misc 1 Z i01rh01d "ACTNH3" "The activity of NH3" "0 - 1 fraction"
state real agrisoil_nh3 ij misc 1 Z i01rh01d "AGRISOIL_NH3" "The activity of NH3" "0 - 1 fraction"
state real fertilizer_nh3 imj misc 1 Z i01rh01d "FERTILIZER_NH3" "The activity of NH3" "0 - 1 fraction"
state real freeinten_nh3 ij misc 1 Z i01rh01d "FREEINTEN_NH3" "The activity of NH3" "0 - 1 fraction"
state real graze_nh3 ij misc 1 Z i01rh01d "GRAZE_NH3" "The activity of NH3" "0 - 1 fraction"
state real industry_nh3 ij misc 1 Z i01rh01d "INDUSTRY_NH3" "The activity of NH3" "0 - 1 fraction"
state real residential_nh3 ij misc 1 Z i01rh01d "RESIDENTIAL_NH3" "The activity of NH3" "0 - 1 fraction"
state real transport_nh3 ij misc 1 Z i01rh01d "TRANSPORT_NH3" "The activity of NH3" "0 - 1 fraction"

# Input for GOCART: Background chemistry, erodible surface emissions map
state real backg_oh ikj misc 1 - i08r "BACKG_OH" "Background OH for Aerosol-GOcart option" "volume mixing ratio"
state real backg_h2o2 ikj misc 1 - i08r "BACKG_H2O2" "Background H2O2 for Aerosol-GOcart option" "volume mixing ratio"
Expand Down Expand Up @@ -3832,6 +3843,10 @@ rconfig integer emiss_opt namelist,chem max_domains
rconfig integer emiss_opt_vol namelist,chem max_domains 0 rh "emiss_opt_vol" "" ""
rconfig integer dust_opt namelist,chem 1 0 rh "dust_opt" "" ""
rconfig integer dust_schme namelist,chem 1 2 rh "dust_schme" "" ""

#renchuanhua rch added
rconfig integer nh3emis_opt namelist,chem 1 0 rh "nh3emis_opt" "" ""

rconfig integer dmsemis_opt namelist,chem 1 0 rh "dmsemis_opt" "" ""
rconfig integer seas_opt namelist,chem 1 0 rh "seas_opt" "" ""
rconfig integer bio_emiss_opt namelist,chem max_domains 0 rh "bio_emiss_opt" "" ""
Expand Down Expand Up @@ -4085,6 +4100,10 @@ package beis314 bio_emiss_opt==2 - -
package megan2 bio_emiss_opt==3 - state:mebio_isop,mebio_apin,mebio_bcar,mebio_acet,mebio_mbo,mebio_no,msebio_isop,mlai,pftp_bt,pftp_nt,pftp_sb,pftp_hb,mtsa,mswdown,EFmegan
package megan2_clm bio_emiss_opt==4

# renchuanhua rch added for online nh3 emissions
package offline nh3emis_opt==0 - -
package online nh3emis_opt==1 - state:EFnh3,agrisoil_nh3,fertilizer_nh3,freeinten_nh3,graze_nh3,industry_nh3,residential_nh3,transport_nh3;emis_ant:e_nh3

# Biospheric CO2 and CH4 emissions
package ebioco2 bio_emiss_opt==16 - state:rad_vprm,lambda_vprm,alpha_vprm,resp_vprm;vprm_in:vegfra_vprm,evi,evi_min,evi_max,lswi,lswi_max,lswi_min;eghg_bio:ebio_gee,ebio_res,ebio_co2oce
package ebioghg bio_emiss_opt==17 - state:rad_vprm,lambda_vprm,alpha_vprm,resp_vprm;vprm_in:vegfra_vprm,evi,evi_min,evi_max,lswi,lswi_max,lswi_min;wet_in:cpool,wetmap,t_ann;eghg_bio:ebio_gee,ebio_res,ebio_co2oce,ebio_ch4wet,ebio_ch4soil,ebio_ch4term
Expand Down
9 changes: 8 additions & 1 deletion chem/chem_driver.F
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ end SUBROUTINE sum_pm_driver
CHARACTER (LEN=1000) :: msg
CHARACTER (LEN=256) :: current_date_char
integer :: current_month
!for the online nh3-"WRF-NH3-CHEM" modified by renchuanhua
integer :: current_hour
! ..
! .. Intrinsic Functions ..
INTRINSIC max, min
Expand Down Expand Up @@ -878,9 +880,14 @@ end SUBROUTINE sum_pm_driver
grid%biomt_par,grid%emit_par,grid%ebio_co2oce, &
eghg_bio, &
grid%seas_flux, &
! stuff for the online nh3-"WRF-NH3-CHEM" modified by renchuanhua
grid%actnh3, grid%EFnh3, &
grid%agrisoil_nh3, grid%fertilizer_nh3, grid%freeinten_nh3, &
grid%graze_nh3, grid%industry_nh3, &
grid%residential_nh3, grid%transport_nh3, current_hour, grid%Q2, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite,jts,jte,kts,kte)
its,ite,jts,jte,kts,kte )
if( chm_is_mozart ) then
call mozcart_lbc_set( chem, num_chem, grid%id, &
ims, ime, jms, jme, kms, kme, &
Expand Down
129 changes: 125 additions & 4 deletions chem/emissions_driver.F
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,15 @@ subroutine emissions_driver(id,ktau,dtstep,DX, &
! stuff for aircraft emissions
emis_aircraft, &
! stuff for GHG fluxes
vprm_in,rad_vprm,lambda_vprm,alpha_vprm,resp_vprm, &
vprm_in,rad_vprm,lambda_vprm,alpha_vprm,resp_vprm, &
xtime,tslb,wet_in,rainc,rainnc,potevp,sfcevp,lu_index, &
biomt_par,emit_par,ebio_co2oce,eghg_bio, &
seas_flux, &
! stuff for online nh3 "WRF-NH3-CHEM" modified by renchuanhua
actnh3,EFnh3, &
agrisoil_nh3, fertilizer_nh3, freeinten_nh3, graze_nh3, &
industry_nh3, residential_nh3, &
transport_nh3, current_hour, Q2, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )
Expand Down Expand Up @@ -131,7 +136,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, &
REAL, DIMENSION( ims:ime, jms:jme, ne_area ), &
INTENT(INOUT ) :: e_bio
REAL, DIMENSION( ims:ime, 1:config_flags%kemit, jms:jme,num_emis_ant),&
INTENT(IN ) :: &
INTENT(INOUT ) :: &
emis_ant
REAL, DIMENSION( ims:ime, kms:kme, jms:jme,num_emis_vol), &
INTENT(INOUT ) :: &
Expand Down Expand Up @@ -290,7 +295,7 @@ subroutine emissions_driver(id,ktau,dtstep,DX, &

real, dimension (ims:ime, jms:jme ) , &
intent(in) :: &
T2, swdown
T2, swdown, Q2 ! modifed by renchuanhua

integer, intent(in) :: current_month

Expand Down Expand Up @@ -336,7 +341,53 @@ subroutine emissions_driver(id,ktau,dtstep,DX, &
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: ht, ic_flashrate, cg_flashrate
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: refl_10cm
! end stuff for lightning NOx
!

! stuff for online NH3 "WRF-NH3-CHEM" modified by renchuanhua
REAL, DIMENSION( ims:ime,12,jms:jme ), OPTIONAL, INTENT(IN ) :: actnh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: EFnh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: agrisoil_nh3
REAL, DIMENSION( ims:ime,12,jms:jme ), OPTIONAL, INTENT(INOUT ) :: fertilizer_nh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: freeinten_nh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: graze_nh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: industry_nh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: residential_nh3
REAL, DIMENSION( ims:ime, jms:jme ), OPTIONAL, INTENT(INOUT ) :: transport_nh3
INTEGER, INTENT(IN ) :: current_hour


! local variables
real,parameter :: EFstd =5.5
real :: CFwind,CFtemp,CFsmois_hus,CFrain
integer :: h
real, dimension (ims:ime, jms:jme ) :: frin_house, frin_sManure,frin_manureStore !renchuanhua
real, dimension (ims:ime, jms:jme ) :: graze_house, graze_out
real, dimension (ims:ime, jms:jme ) :: CFsmois
real, dimension (ims:ime, jms:jme ) :: T_house, V_house, GF_Thouse
real, parameter :: Factor_fihouse=0.156, Factor_sManure=0.774, Factor_manureStore=0.07
real, parameter :: Factor_grhouse=0.226

real, dimension (ims:ime, jms:jme ) :: house, store ,outsoil
real, dimension (ims:ime, jms:jme ) :: emis_house, emis_store ,emis_fert

real, save :: freq_residential(24) = &
(/0.0110, 0.0030, 0.0010, 0.0000, 0.0020, 0.0169, &
0.0914, 0.2111, 0.1402, 0.0905, 0.0676, 0.0487, &
0.0179, 0.0358, 0.0258, 0.0182, 0.0272, 0.0222, &
0.0411, 0.0401, 0.0268, 0.0202, 0.0212, 0.0202/)
real, save :: freq_transport(24) = &
(/0.02, 0.01, 0.01, 0.00, 0.00, 0.00, &
0.01, 0.03, 0.06, 0.06, 0.06, 0.05, &
0.06, 0.06, 0.06, 0.07, 0.07, 0.08, &
0.08, 0.07, 0.05, 0.04, 0.03, 0.02/)
real, save :: freq_industry(24) = &
(/0.02, 0.01, 0.01, 0.00, 0.00, 0.00, &
0.01, 0.03, 0.06, 0.06, 0.06, 0.05, &
0.06, 0.06, 0.06, 0.07, 0.07, 0.08, &
0.08, 0.07, 0.05, 0.04, 0.03, 0.02/)

! end stuff online NH3


! Local variables...
!
INTEGER :: begday,endday,i, j, k, m, p_in_chem, ksub, dust_emiss_active, seasalt_emiss_active,emiss_ash_hgt
Expand Down Expand Up @@ -951,6 +1002,76 @@ subroutine emissions_driver(id,ktau,dtstep,DX, &
END SELECT bioem_select

!!! **************** END BIOGENICS, ADD EMISSIONS FOR VARIOUS PACKAGES


!!! online nh3 "WRF-NH3-CHEM" modified by renchuanhua

if( config_flags%nh3emis_opt == ONLINE) then
emis_ant(ims:ime , config_flags%kemit , jms:jme, p_e_nh3)=0.0

frin_house = freeinten_nh3*Factor_fihouse ! house [in]
frin_sManure = freeinten_nh3*Factor_sManure ! manure - field [out]
frin_manureStore = freeinten_nh3*Factor_manureStore ! manure - store [none]
graze_house = graze_nh3*Factor_grhouse ! graze [in]
graze_out = graze_nh3*(1.0-Factor_grhouse) ! graze [out]

GF_Thouse =1.0

! Animal house temperature and wind speed
where( T2.LT.273.15)
T_house = 287.15 + 0.5*(T2-(273.15+0))
V_house = 0.2
elsewhere(T2 .GE. 273.15 .and. T2 .LT. 285.65)
T_house = 287.15
V_house = 0.2 + T2*(0.405/12.5)
elsewhere(T2 .GE. 285.65)
T_house = 287.15 + 1.4*(T2-(285.65))
V_house = 0.405 !0.5*(0.38+0.43)
end where

! out field soil moisture correction factor
where( smois(:,1,:).LT.0.45)
CFsmois = 0.45*exp(-1.0*smois(:,1,:))+0.55
elsewhere(smois(:,1,:).GE.0.45)
CFsmois = 0.45*exp(smois(:,1,:))+0.6
end where


do j=jts,jte
do i=its,ite


CFwind =exp(0.0419*(u10(i,j)*u10(i,j)+v10(i,j)*v10(i,j))**0.5)
CFtemp = (exp(0.093*(tsk(i,j)-T2(i,j))-0.57))*exp(0.018*(tsk(i,j)-273.15))
CFrain = 1/(3.2*rainnc(i,j)+1.0)
EFnh3(i,j)=CFsmois(i,j)*CFtemp*CFrain*CFwind

CFsmois_hus = 0.45*exp(-1.0*smois(i,1,j))+0.55
GF_Thouse =exp((0.093*(T_house(i,j)-tsk(i,j)))-0.57)*exp(0.018*(tsk(i,j)-273.15))

! for house
emis_house(i,j) = CFsmois_hus*GF_Thouse(i,j)*exp(0.0419*V_house(i,j))*(frin_house(i,j) + graze_house(i,j))
! for store
emis_store(i,j) = frin_manureStore(i,j)
! for outside soil
emis_fert(i,j) = EFnh3(i,j)*(fertilizer_nh3(i,current_month,j)+frin_sManure(i,j)+ graze_out(i,j)+agrisoil_nh3(i,j))


! fertilizer and freeinten .... units is kg/km2/month
! conv is used to change units from "mole/km2/hr" to "delta ppmv"
conv = 4.828e-4/rho_phy(i,1,j)*dtstep/(dz8w(i,1,j)*60.)
h=MOD(current_hour+8,24) !range 0-23

emis_ant(i,1,j,p_e_nh3)=1000.0/(17.0*30.0*24.0)*(emis_house(i,j)+emis_store(i,j)+emis_fert(i,j)) &
+ freq_residential(h+1)*residential_nh3(i,j)*1000.0/(30.0*17.0) &
+ freq_industry(h+1) *industry_nh3(i,j)*1000.0/(30.0*17.0) &
+ freq_transport(h+1) *transport_nh3(i,j)*1000.0/(30.0*17.0)
enddo
enddo

end if


!
gas_addemiss_select: SELECT CASE(config_flags%chem_opt)
CASE (RADM2, RADM2_KPP, RADM2SORG, RADM2SORG_AQ, RADM2SORG_AQCHEM, RADM2SORG_KPP, &
Expand Down