WRF/Chem at University of L'Aquila

We use internal development version 3.5, which is version 3.4.1. added with aerosol-cloud feedback option for the VBS aerosol SOA module and MEGAN biogenic emissions. The mentioned changes will be released with a next public version of the code and described in a manuscript in preparation.

General settings of the model are given here.

Here we describe specific changes to the code for AQMEII simulations.

VOC-OH reactivity, short-lived RO2 sum and branching ratio

General description of the VOC-OH reactivity and branching ratio diagnostics is given here. The peroxy radicals included here are those not transported into the array "chem", but generated into the chemical mechanism.

Added 3 transported variables to the array "chem" in the Registry/registry.chem:

...
# GC 20130326 VOC-OH reactivity
state   real   vocr_nmvoc  ikjftb   chem        1         -   i0{12}rhusdf=(bdy_interp:dt)  "vocr_nmvoc"  "total NMVOC reactivity against OH"  "s-1"
state   real   vocr_co     ikjftb   chem        1         -   i0{12}rhusdf=(bdy_interp:dt)  "vocr_co"     "CO reactivity against OH"           "s-1"

# GC 20130326 RO2 family
state   real   sumro2     ikjftb   chem        1         -   i0{12}rhusdf=(bdy_interp:dt)  "sumro2"     "Sum of all RO2 species"           "ppmv"
...
# GC 20130326 VOC-OH reactivity, branching ratio, and RO2 family
package   racm_soa_vbs_kpp  chem_opt==108                  -         chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,paa,ora1,ora2,nh3,n2o5,no3,pan,hc3,hc5,hc8,eth,co,ete,olt,oli,tol,xyl,aco3,tpan,hono,hno4,ket,gly,mgly,dcb,onit,csl,iso,co2,ch4,udd,hket,api,lim,dien,macr,hace,ishp,ison,mahp,mpan,nald,sesq,mbo,nume,den,sumro2,vocr_co,vocr_nmvoc,cvasoa1,cvasoa2,cvasoa3,cvasoa4,cvbsoa1,cvbsoa2,cvbsoa3,cvbsoa4,ho,ho2,so4aj,so4ai,nh4aj,nh4ai,no3aj,no3ai,naaj,naai,claj,clai,asoa1j,asoa1i,asoa2j,asoa2i,asoa3j,asoa3i,asoa4j,asoa4i,bsoa1j,bsoa1i,bsoa2j,bsoa2i,bsoa3j,bsoa3i,bsoa4j,bsoa4i,orgpaj,orgpai,ecj,eci,p25j,p25i,antha,seas,soila,nu0,ac0,corn

Modified the KPP RACM_SOA_VBS mechanism under chem/KPP/mechanisms/racm_soa_vbs.

In racm_soa_vbs.eqn:

 {032:009} HO2+HO2=H2O2+den{+O2}                : (3.5D-13*EXP(430./TEMP) + 1.7D-33* C_M *EXP(1000./TEMP)) ;
 {033:010} HO2+HO2+H2O=H2O2+H2O+den{+O2}        : (4.9D-34* EXP(2630./TEMP)+ 2.38D-54* C_M *EXP(3200./TEMP)) ;
 {040:017} HO2+NO=NO2+HO+nume           : ARR2( 3.50D-12 , -250.0_dp, TEMP ) ;
 {043:020} HO2+NO3=0.3 HNO3+0.7 NO2+0.7 HO+nume{+O2} : 3.50D-12 ;
 {057:034} CO+HO=HO2+CO2+vocr_co        : k57(TEMP,C_M) ;
 {058:035} NALD+HO=HCHO+CO+NO2+vocr_nmvoc       : ARR2( 5.60D-12 , -270.0_dp, TEMP ) ;
 {059:036} HACE+HO=MGLY+HO2+vocr_nmvoc          : 3.00D-12 ;
 {061:038} ETH+HO=ETHP+H2O+vocr_nmvoc           : ARR2( 8.7D-12 , 1070.0_dp, TEMP );
 {062:039} HC3+HO=0.583 HC3P+0.381 HO2+0.335 ALD+0.036 ORA1+0.036 CO+0.036 GLY+0.036 HO+0.010 HCHO+H2O+vocr_nmvoc  : ARR2( 5.26D-12 , 260.0_dp, TEMP ) ;
 {063:040} HC5+HO=0.75 HC5P+0.25 KET+0.25 HO2+H2O+vocr_nmvoc  :         ARR2( 8.02D-12 , 155.0_dp, TEMP ) ;
 {064:041} HC8+HO=0.9511 HC8P+0.025 ALD+0.024 HKET+0.049 HO2+H2O+vocr_nmvoc  :  ARR2( 1.64D-11 , 125.0_dp, TEMP ) ;
 {065:042} ETE+HO=ETEP+vocr_nmvoc               : TROE( 1.0D-28 , 4.5_dp , 8.8D-12 , 0.85_dp , TEMP, C_M) ;
 {066:043} OLT+HO=OLTP+vocr_nmvoc               : ARR2( 5.72D-12 , -500.0_dp, TEMP ) ;
 {067:044} OLI+HO=OLIP+vocr_nmvoc               : ARR2( 1.33D-11 , -500.0_dp, TEMP ) ;
 {068:045} DIEN+HO=ISOP+vocr_nmvoc              : ARR2( 1.48D-11 , -448.0_dp, TEMP ) ;
 {069:046} ISO+HO=ISOP+vocr_nmvoc               : ARR2( 2.54D-11 , -410.0_dp, TEMP ) ;
 {070:047} API+HO=APIP+vocr_nmvoc               : ARR2( 1.21D-11 , -444.0_dp, TEMP ) ;
 {071:048} LIM+HO=LIMP+vocr_nmvoc               : 1.71D-10 ;
 {072:049} TOL+HO=0.90 ADDT+0.10 XO2+0.10 HO2+vocr_nmvoc : ARR2( 1.81D-12 , -338.0_dp, TEMP ) ;
 {073:050} XYL+HO=0.90 ADDX+0.10 XO2+0.10 HO2+vocr_nmvoc : ARR2( 7.30D-12 , -355.0_dp, TEMP ) ;
 {074:051} CSL+HO=0.85 ADDC+0.10 PHO+0.05 HO2+0.05 XO2+vocr_nmvoc : 6.8D-11 ;
 {075:052} HCHO+HO=HO2+CO+H2O+vocr_nmvoc        : ARR2( 5.5D-12 , -125.0_dp, TEMP ) ;
 {076:053} ALD+HO=ACO3+H2O+vocr_nmvoc                   : ARR2( 5.6D-12 , -270.0_dp, TEMP ) ;
 {077:054} KET+HO=KETP+H2O+vocr_nmvoc                   : (THERMAL_T2(5.68D-18, -92.0_dp,TEMP )) ;
 {078:055} HKET+HO=HO2+MGLY+H2O+vocr_nmvoc      : 3.00D-12 ;
 {079:056} GLY+HO=HO2+2.0 CO+H2O+vocr_nmvoc     : 1.15D-11 ;
 {080:057} MGLY+HO=ACO3+CO+H2O+vocr_nmvoc       : 1.72D-11 ;
 {081:058} MACR+HO=MACP+vocr_nmvoc              : .5*(4.13D-12*EXP(425./TEMP) + 1.86D-11*EXP(175./TEMP)) ;
 {082:059} DCB+HO=0.50 TCO3+0.50 HO2+0.50 XO2+0.35 UDD+0.15 GLY+0.15 MGLY+vocr_nmvoc : ARR2( 2.80D-11 , -175.0_dp, TEMP ) ;
 {083:060} UDD+HO=0.88 ALD+0.12 KET+HO2+vocr_nmvoc  : 2.70D-10 ;
 {084:061} OP1+HO=0.65 MO2+0.35 HCHO+0.35 HO+vocr_nmvoc  : ARR2( 3.8D-12 , -200.0_dp, TEMP ) ;
 {085:062} OP2+HO=0.44 HC3P+0.08 ALD+0.41 KET+0.49 HO+0.07 XO2+vocr_nmvoc : ARR2( 3.40D-12 , -190.0_dp, TEMP ) ;
 {086:063} PAA+HO=0.35 HCHO+0.65 ACO3+0.35 HO2+0.35 XO2+vocr_nmvoc  : ARR2( 3.8D-12 , -200.0_dp, TEMP ) ;
 {087:064} PAN+HO=HCHO+XO2+H2O+NO3+vocr_nmvoc   : 4.00D-14 ;
 {088:065} TPAN+HO=0.60 HKET+0.40 HCHO+0.40 HO2+XO2+0.40 PAN+0.60 NO3+vocr_nmvoc  : ARR2( 3.25D-13 , -500.0_dp, TEMP ) ;
 {089:066} ONIT+HO=HC3P+NO2+H2O+vocr_nmvoc      : ARR2( 5.31D-12 , 260.0_dp , TEMP) ;
 {094:071} MAHP+HO=MACP+vocr_nmvoc              : 3.00D-11 ;
 {130:107} MO2+NO=HCHO+HO2+NO2+nume             : ARR2( 2.8D-12 , -300.0_dp, TEMP ) ;
 {131:108} ETHP+NO=ALD+HO2+NO2+nume             : ARR2( 2.6D-12 , -365.0_dp, TEMP );
 {132:109} HC3P+NO=0.047 HCHO+0.233 ALD+0.623 KET+0.063 GLY+0.742 HO2+0.15 MO2+0.048 ETHP+0.048 XO2+0.059 ONIT+0.941 NO2+nume : 4.00D-12 ;
 {133:110} HC5P+NO=0.021 HCHO+0.211 ALD+0.722 KET+0.599 HO2+0.031 MO2+0.245 ETHP+0.334 XO2+0.124 ONIT+0.876 NO2+nume  : 4.00D-12 ;
 {134:111} HC8P+NO=0.15 ALD+0.642 KET+0.133 ETHP+0.261 ONIT+0.739 NO2+0.606 HO2+0.416 XO2+nume  : 4.00D-12 ;
 {135:112} ETEP+NO=1.6 HCHO+HO2+NO2+0.2 ALD+nume                                        : 9.00D-12 ;
 {136:113} OLTP+NO=0.94 ALD+HCHO+HO2+NO2+0.06 KET+nume                          : 4.00D-12 ;
 {137:114} OLIP+NO=HO2+1.71 ALD+0.29 KET+NO2+nume                                       : 4.00D-12 ;
 {138:115} ISOP+NO=MACR+NO2+HCHO+HO2+0.046 ISON+nume                            : ARR2( 2.43D-12 , -360.0_dp, TEMP ) ;
 {139:116} APIP+NO=0.80 HO2+0.80 ALD+0.80 KET+0.20 ONIT+0.80 NO2+nume           : 4.00D-12 ;
 {140:117} LIMP+NO=0.65 HO2+0.40 MACR+0.25 OLI+0.25 HCHO+0.35 ONIT+0.65 NO2+nume        : 4.00D-12 ;
 {141:118} TOLP+NO=0.95 NO2+0.95 HO2+0.65 MGLY+1.20 GLY+0.50 DCB+0.05 ONIT+nume         : 4.00D-12 ;
 {142:119} XYLP+NO=0.95 NO2+0.95 HO2+0.60 MGLY+0.35 GLY+0.95 DCB+0.05 ONIT+nume         : 4.00D-12 ;
 {143:120} CSLP+NO=GLY+MGLY+HO2+NO2+nume                                                : 4.00D-12 ;
 {144:121} ACO3+NO=MO2+NO2+nume                 : ARR2( 8.1D-12 , -270.0_dp, TEMP ) ;
 {145:122} TCO3+NO=ACO3+HCHO+NO2+nume   : ARR2( 8.1D-12 , -270.0_dp, TEMP ) ;
 {146:123} KETP+NO=0.54 MGLY+0.46 ALD+0.23 ACO3+0.77 HO2+0.16 XO2+NO2+nume              : 4.00D-12  ;
 {147:124} OLNN+NO=HO2+ONIT+NO2+nume                                            : 4.00D-12 ;
 {148:125} OLND+NO=0.287 HCHO+1.24 ALD+0.464 KET+2.0 NO2+nume                   : 4.00D-12 ;
 {149:126} MO2+HO2=OP1+den                                                      : ARR2( 4.1D-13 , -750.0_dp, TEMP ) ;
 {150:127} ETHP+HO2=OP2+den                     : ARR2( 7.4D-13 , -700.0_dp, TEMP ) ;
 {151:128} HC3P+HO2=OP2+den                     : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {152:129} HC5P+HO2=OP2+den                     : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {153:130} HC8P+HO2=OP2+den                     : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {154:131} ETEP+HO2=OP2+den                     : ARR2( 1.90D-13 , -1300.0_dp, TEMP ) ;
 {155:132} OLTP+HO2=OP2+den                     : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {156:133} OLIP+HO2=OP2+den                     : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {157:134} ISOP+HO2=ISHP+den                    : ARR2( 2.05D-13 , -1300.0_dp, TEMP ) ;
 {158:135} APIP+HO2=OP2+den                     : 1.50D-11 ;
 {159:136} LIMP+HO2=OP2+den                     : 1.50D-11 ;
 {160:137} TOLP+HO2=OP2+den                     : ARR2( 3.75D-13 , -980.0_dp, TEMP ) ;
 {161:138} XYLP+HO2=OP2+den                     : ARR2( 3.75D-13 , -980.0_dp, TEMP) ;
 {162:139} CSLP+HO2=OP2+den                     : ARR2( 3.75D-13 , -980.0_dp, TEMP ) ;
 {163:140} ACO3+HO2=PAA+den                     : 4.3D-13*EXP(1040./TEMP)/(1.+0.027*EXP(660./TEMP)) ;
 {164:141} ACO3+HO2=ORA2+O3+den                 : 4.3D-13*EXP(1040./TEMP)/(1.+37.*EXP(-660./TEMP)) ;
 {165:142} TCO3+HO2=OP2+den             : 4.3D-13*EXP(1040./TEMP)/(1.+0.027*EXP(660./TEMP)) ;
 {166:143} TCO3+HO2=ORA2+O3+den                 : 4.3D-13*EXP(1040./TEMP)/(1.+37.*EXP(-660./TEMP)) ;
 {167:144} KETP+HO2=OP2+den                     : ARR2( 1.15D-13 , -1300.0_dp, TEMP ) ;
 {168:145} OLNN+HO2=ONIT+den                    : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {169:146} OLND+HO2=ONIT+den                    : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {170:147} MO2+MO2=1.33 HCHO+0.66 HO2+den               : ARR2( 9.5D-14 , -390.0_dp, TEMP ) ;
 {171:148} ETHP+MO2=0.75 HCHO+HO2+0.75 ALD+den          : ARR2( 1.18D-13 , -158.0_dp, TEMP ) ;
 {172:149} HC3P+MO2=0.81 HCHO+0.992 HO2+0.58 ALD+0.018 KET+0.007 MO2+0.005 MGLY+0.085 XO2+0.119 GLY+den  : ARR2( 9.46D-14 , -431.0_dp , TEMP) ;
 {173:150} HC5P+MO2=0.829 HCHO+0.946 HO2+0.523 ALD+0.24 KET+0.014 ETHP+0.049 MO2+0.245 XO2+den  : ARR2( 1.00D-13 , -467.0_dp, TEMP ) ;
 {174:151} HC8P+MO2=0.753 HCHO+0.993 HO2+0.411 ALD+0.419 KET+0.322 XO2+0.013 ETHP+den  : ARR2( 4.34D-14 , -633.0_dp, TEMP ) ;
 {175:152} ETEP+MO2=1.55 HCHO+HO2+0.35 ALD+den                  : ARR2( 1.71D-13 , -708.0_dp, TEMP ) ;
 {176:153} OLTP+MO2=1.25 HCHO+HO2+0.669 ALD+0.081 KET+den               : ARR2( 1.46D-13 , -708.0_dp, TEMP ) ;
 {177:154} OLIP+MO2=0.755 HCHO+HO2+0.932 ALD+0.313 KET+den      : ARR2( 9.18D-14 , -708.0_dp, TEMP ) ;
 {178:155} ISOP+MO2=0.550 MACR+0.370 OLT+HO2+0.08 OLI+1.09 HCHO+den  : ARR2( 1.36D-13 , -708.0_dp, TEMP ) ;
 {179:156} APIP+MO2=HCHO+ALD+KET+2.0 HO2+den  : ARR2( 3.56D-14 , -708.0_dp, TEMP ) ;
 {180:157} LIMP+MO2=1.4 HCHO+0.60 MACR+0.40 OLI+2.0 HO2+den     : ARR2( 3.56D-14 , -708.0_dp, TEMP ) ;
 {181:158} TOLP+MO2=HCHO+HO2+0.35 MGLY+0.65 GLY+DCB+den                 : ARR2( 3.56D-14 , -708.0_dp, TEMP ) ;
 {182:159} XYLP+MO2=HCHO+HO2+0.63 MGLY+0.37 GLY+DCB+den                 : ARR2( 3.56D-14 , -708.0_dp, TEMP ) ;
 {183:160} CSLP+MO2=GLY+MGLY+HCHO+2.0 HO2+den                   : ARR2( 3.56D-14 , -708.0_dp, TEMP ) ;
 {184:161} ACO3+MO2=HCHO+HO2+MO2+den                            : ARR2( 1.8D-12 , -500.0_dp, TEMP ) ;
 {185:162} ACO3+MO2=HCHO+ORA2+den                               : ARR2( 2.0D-13 , -500.0_dp, TEMP ) ;
 {186:163} TCO3+MO2=2.0 HCHO+HO2+ACO3+den                       : ARR2( 1.8D-12 , -500.0_dp, TEMP ) ;
 {187:164} TCO3+MO2=HCHO+ORA2+den                               : ARR2( 2.0D-13 , -500.0_dp, TEMP ) ;
 {188:165} KETP+MO2=0.75 HCHO+0.88 HO2+0.40 MGLY+0.30 ALD+0.30 HKET+0.12 ACO3+0.08 XO2+den  : ARR2( 6.91D-13 , -508.0_dp, TEMP ) ;
 {189:166} OLNN+MO2=0.75 HCHO+HO2+ONIT+den                      : ARR2( 1.60D-13 , -708.0_dp, TEMP ) ;
 {190:167} OLND+MO2=0.96 HCHO+0.5 HO2+0.64 ALD+0.149 KET+0.5 NO2+0.5 ONIT+den  :        ARR2( 9.68D-14 , -708.0_dp, TEMP ) ;
 {191:168} ETHP+ACO3=ALD+0.5 HO2+0.5 MO2+0.5 ORA2+den  : ARR2( 1.03D-12 , -211.0_dp, TEMP ) ;
 {192:169} HC3P+ACO3=0.724 ALD+0.127 KET+0.488 HO2+0.508 MO2+0.006 ETHP+0.071 XO2+0.091 HCHO+0.10 GLY+0.499 ORA2+0.004 MGLY+den  : ARR2( 6.90D-13 , -460.0_dp, TEMP ) ;
 {193:170} HC5P+ACO3=0.677 ALD+0.33 KET+0.438 HO2+0.554 MO2+0.495 ORA2+0.018 ETHP+0.237 XO2+0.076 HCHO+den  : ARR2( 5.59D-13 , -522.0_dp, TEMP ) ;
 {194:171} HC8P+ACO3=0.497 ALD+0.581 KET+0.489 HO2+0.507 MO2+0.495 ORA2+0.015 ETHP+0.318 XO2+den  : ARR2( 2.47D-13 , -683.0_dp, TEMP ) ;
 {195:172} ETEP+ACO3=0.8 HCHO+0.6 ALD+0.5 HO2+0.5 MO2+0.5 ORA2+den  : ARR2( 9.48D-13 , -765.0_dp, TEMP ) ;
 {196:173} OLTP+ACO3=0.859 ALD+0.501 HCHO+0.501 HO2+0.501 MO2+0.499 ORA2+0.141 KET+den  : ARR2( 8.11D-13 , -765.0_dp, TEMP ) ;
 {197:174} OLIP+ACO3=0.941 ALD+0.569 KET+0.51 HO2+0.51 MO2+0.49 ORA2+den  : ARR2( 5.09D-13 , -765.0_dp, TEMP ) ;
 {198:175} ISOP+ACO3=0.771 MACR+0.229 OLT+0.506 HO2+0.494 ORA2+0.340 HCHO+0.506 MO2+den  : ARR2( 7.60D-13 , -765.0_dp, TEMP ) ;
 {199:176} APIP+ACO3=ALD+KET+HO2+MO2+den                                : ARR2( 7.40D-13 , -765.0_dp, TEMP ) ;
 {200:177} LIMP+ACO3=0.60 MACR+0.40 OLI+0.40 HCHO+HO2+MO2+den   : ARR2( 7.40D-13 , -765.0_dp, TEMP ) ;
 {201:178} TOLP+ACO3=MO2+HO2+0.35 MGLY+0.65 GLY+DCB+den                 : ARR2( 7.40D-13 , -765.0_dp, TEMP ) ;
 {202:179} XYLP+ACO3=MO2+HO2+0.63 MGLY+0.37 GLY+DCB+den                 : ARR2( 7.40D-13 , -765.0_dp, TEMP ) ;
 {203:180} CSLP+ACO3=GLY+MGLY+MO2+HO2+den                               : ARR2( 7.40D-13 , -765.0_dp, TEMP ) ;
 {204:181} ACO3+ACO3=2.0 MO2+den                                        : ARR2( 2.5D-12 , -500.0_dp, TEMP ) ;
 {205:182} TCO3+ACO3=MO2+ACO3+HCHO+den                                  : ARR2( 2.5D-12 , -500.0_dp, TEMP ) ;
 {206:183} KETP+ACO3=0.54 MGLY+0.35 ALD+0.11 KET+0.12 ACO3+0.38 HO2+0.08 XO2+0.5 MO2+0.5 ORA2+den  : ARR2( 7.51D-13 , -565.0_dp, TEMP ) ;
 {207:184} OLNN+ACO3=ONIT+0.5 ORA2+0.5 MO2+0.5 HO2+den  : ARR2( 8.85D-13 , -765.0_dp, TEMP ) ;
 {208:185} OLND+ACO3=0.207 HCHO+0.65 ALD+0.167 KET+0.484 ORA2+0.484 ONIT+0.516 NO2+0.516 MO2+den  : ARR2( 5.37D-13 , -765.0_dp, TEMP ) ;
 {209:186} OLNN+OLNN=2.0 ONIT+HO2+den                                   : ARR2( 7.00D-14 , -1000.0_dp , TEMP) ;
 {210:187} OLNN+OLND=0.202 HCHO+0.64 ALD+0.149 KET+0.50 HO2+1.50 ONIT+0.50 NO2+den   : ARR2( 4.25D-14 , -1000.0_dp, TEMP ) ;
 {211:188} OLND+OLND=0.504 HCHO+1.21 ALD+0.285 KET+ONIT+NO2+den   : ARR2( 2.96D-14 , -1000.0_dp, TEMP ) ;
 {212:189} MO2+NO3=HCHO+HO2+NO2+nume                            : 1.20D-12 ;
 {213:190} ETHP+NO3=ALD+HO2+NO2+nume                            : 1.20D-12 ;
 {214:191} HC3P+NO3=0.048 HCHO+0.243 ALD+0.67 KET+0.063 GLY+0.792 HO2+0.155 MO2+0.053 ETHP+0.051 XO2+NO2+nume   :       1.20D-12 ;
 {215:192} HC5P+NO3=0.021 HCHO+0.239 ALD+0.828 KET+0.699 HO2+0.04 MO2+0.262 ETHP+0.391 XO2+NO2+nume   : 1.20D-12 ;
 {216:193} HC8P+NO3=0.187 ALD+0.88 KET+0.845 HO2+0.155 ETHP+0.587 XO2+NO2+nume   :      1.20D-12 ;
 {217:194} ETEP+NO3=1.6 HCHO+0.2 ALD+HO2+NO2+nume                       : 1.20D-12 ;
 {218:195} OLTP+NO3=HCHO+0.94 ALD+0.06 KET+HO2+NO2+nume                 : 1.20D-12 ;
 {219:196} OLIP+NO3=1.71 ALD+0.29 KET+HO2+NO2+nume                      : 1.20D-12 ;
 {221:198} APIP+NO3=ALD+KET+HO2+NO2+nume                                : 1.20D-12 ;
 {222:199} LIMP+NO3=0.60 MACR+0.40 OLI+0.40 HCHO+HO2+NO2+nume   : 1.20D-12 ;
 {223:200} TOLP+NO3=0.70 MGLY+1.30 GLY+0.50 DCB+HO2+NO2+nume    : 1.20D-12 ;
 {224:201} XYLP+NO3=1.26 MGLY+0.74 GLY+DCB+HO2+NO2+nume                 : 1.20D-12 ;
 {225:202} CSLP+NO3=GLY+MGLY+HO2+NO2+nume                               : 1.20D-12;
 {226:203} ACO3+NO3=MO2+NO2+nume                                        : 4.00D-12;
 {227:204} TCO3+NO3=HCHO+ACO3+NO2+nume                                  : 4.00D-12;
 {228:205} KETP+NO3=0.54 MGLY+0.46 ALD+0.77 HO2+0.23 ACO3+0.16 XO2+NO2+nume  : 1.20D-12 ;
 {229:206} OLNN+NO3=ONIT+HO2+NO2+nume                   : 1.20D-12 ;
 {230:207} OLND+NO3=0.28 HCHO+1.24 ALD+0.469 KET+2.0 NO2+nume  :        1.20D-12 ;
 {231:208} XO2+HO2=OP2+den                              : ARR2( 1.66D-13 , -1300.0_dp, TEMP ) ;
 {232:209} XO2+MO2=HCHO+HO2+den                                 : ARR2( 5.99D-15 , -1510.0_dp, TEMP ) ;
 {233:210} XO2+ACO3=MO2+den                             : ARR2( 3.40D-14 , -1560.0_dp, TEMP ) ;
 {234:211} XO2+XO2=M+den{O2}                                    : ARR2( 7.13D-17 , -2950.0_dp, TEMP ) ;
 {235:212} XO2+NO=NO2+nume                              : 4.00D-12 ;
 {236:213} XO2+NO3=NO2+nume                             : 1.20D-12 ;
 {237:214} ISOP+ISOP=2. MACR+HCHO+HO2+den                       : 2.00D-12 ;
 {238:215} ISHP+HO=MACR+HO+vocr_nmvoc                           : 1.00D-10 ;
 {239:216} ISON+HO=HACE+NALD+vocr_nmvoc                         : 1.30D-11 ;
 {240:217} MACP+NO=NO2+0.25 HACE+0.25 CO+0.25 ACO3+0.5 MGLY+0.75 HCHO+0.75 HO2+nume : ARR2( 2.54D-12 , -360.0_dp, TEMP ) ;
 {241:218} MACP+HO2=MAHP+den                            : ARR2( 1.82D-13 , -1300.0_dp, TEMP ) ;
 {242:219} MACP+MACP=HACE+MGLY+0.5 HCHO+0.5 CO+HO2+den  : 2.00D-12 ;
 {245:222} SESQ+HO=0.36 KET+0.3 HCHO+0.05 ORA1+0.19 OLIP+vocr_nmvoc                        : 2.52D-10 ;
 {248:225} MBO+HO=OLIP+vocr_nmvoc               : ARR2( 1.33D-11 , -500.0_dp, TEMP ) ;

In racm_soa_vbs.spc in the #DEFVAR block added:

 nume =IGNORE;
 den =IGNORE;
 vocr_nmvoc =IGNORE;
 vocr_co =IGNORE;

In chem/chem_driver.F:

...
      ! GC 20130326 VOC-OH reactivity
      real, dimension(grid%sm31:grid%em31,grid%sm32:grid%em32,grid%sm33:grid%em33) :: oh_old
      ! GC
...
#ifdef WRF_KPP

         do k=kts,kte
           do i=its,ite
             do j=jts,jte
               chem(i,k,j,p_psd1)=0.0
               chem(i,k,j,p_psd2)=0.0
          enddo
         enddo
          enddo

   CALL wrf_debug(15,'calling kpp_mechanism_driver')

   ! GC 20130326 VOC-OH reactivity
   if( config_flags%chem_opt == RACM_SOA_VBS_KPP ) then
     do k=kts,kte
       do i=its,ite
         do j=jts,jte
           ! Zero out VOC reactivity, and save old OH
           oh_old(i,k,j)            = chem(i,k,j,p_ho)
           chem(i,k,j,p_vocr_co)    = 0.0
           chem(i,k,j,p_vocr_nmvoc) = 0.0
         enddo
       enddo
     enddo
   end if
   ! GC

CALL kpp_mechanism_driver (chem,                                                      &
   grid%id,dtstepc,config_flags,                                                      &
   p_phy,t_phy,rho,                                                                   &
#if (NMM_CORE == 1)
   moist_trans,                                                                       &
#endif
#if (EM_CORE == 1)
   moist,                                                                             &
#endif
   vdrog3, ldrog, vdrog3_vbs, ldrog_vbs,                                              &
!
#include <call_to_kpp_mech_drive.inc>
!
   ids,ide, jds,jde, kds,kde,                                                         &
   ims,ime, jms,jme, kms,kme,                                                         &
   its,ite,jts,jte,kts,kte)
          if( config_flags%chem_opt == MOZART_KPP .or. &
              config_flags%chem_opt == MOZCART_KPP .or. &
              config_flags%chem_opt == MOZART_MOSAIC_4BIN_VBS0_KPP ) then
             call mozcart_lbc_set( chem, num_chem, grid%id, &
                                   ims, ime, jms, jme, kms, kme,    &
                                    its, ite, jts, jte, kts )
          end if
    if(config_flags%chem_opt == 301 ) then
       chem(its:ite,kts:kte,jts:jte,p_sulf)=vcsulf_old(its:ite,kts:kte,jts:jte)
       chem(its:ite,kts:kte,jts:jte,p_so2)=vcso2_old(its:ite,kts:kte,jts:jte)
!      chem(its:ite,kts:kte,jts:jte,p_h2o2)=vch2o2_old(its:ite,kts:kte,jts:jte)
   endif

   ! GC 20130326 VOC-OH reactivity
   ! GC 20130326 RO2 family
   if( config_flags%chem_opt == RACM_SOA_VBS_KPP ) then
     do k=kts,kte
       do i=its,ite
         do j=jts,jte

           ! Sum up RO2 short-lived species
           chem(i,k,j,p_sumro2) = grid%mo2(i,k,j)   + &
                                  grid%ethp(i,k,j)  + &
                                  grid%hc3p(i,k,j)  + &
                                  grid%hc5p(i,k,j)  + &
                                  grid%hc8p(i,k,j)  + &
                                  grid%etep(i,k,j)  + &
                                  grid%oltp(i,k,j)  + &
                                  grid%olip(i,k,j)  + &
                                  grid%isop(i,k,j)  + &
                                  grid%apip(i,k,j)  + &
                                  grid%limp(i,k,j)  + &
                                  grid%tolp(i,k,j)  + &
                                  grid%xylp(i,k,j)  + &
                                  grid%cslp(i,k,j)  + &
                                  grid%tco3(i,k,j)  + &
                                  grid%ketp(i,k,j)  + &
                                  grid%olnn(i,k,j)  + &
                                  grid%olnd(i,k,j)  + &
                                  grid%xo2(i,k,j)   + &
                                  grid%macp(i,k,j)
           ! Following notes by Christoph Knote (NCAR)
           !
           ! vocr_* is calculated in KPP as product from all
           ! bimolecular reactions of VOC + OH:
           ! e.g. CH2O+OH=CO+HO2+H2O+vocr_nmvoc     : 9.e-12_dp ;
           ! that is k * [CH2O] * [OH], and vocr_* is in "ppmv" (created per
           ! timestep)
           ! we calculate reactivity (s-1) back by
           ! vocr_* / ([OH] * dt) with [OH] being the concentration of OH
           ! before KPP
           ! ignore [OH] < 1e-3 pptv
           if (oh_old(i,k,j) > 1.0e-9) then
             chem(i,k,j,p_vocr_nmvoc) = chem(i,k,j,p_vocr_nmvoc) / (oh_old(i,k,j) * dtstepc)
             chem(i,k,j,p_vocr_co)    = chem(i,k,j,p_vocr_co)    / (oh_old(i,k,j) * dtstepc)
           endif

         enddo
       enddo
     enddo
   end if
   ! GC

Accumulated dry deposition output

The aim is to output 2D fields of accumulated dry deposition fluxes for required species.

In Registry/registry.chem:

...
# GC 20130410 drydep output
state    real    -         ivjf      dryd_ct           1    -   -    -
state    real  dryd_so2    ivjf      dryd_ct           1         -      rh      "dryd_so2"       "SO2 accumulated deposition"  "mol/m2"
state    real  dryd_no2    ivjf      dryd_ct           1         -      rh      "dryd_no2"       "NO2 accumulated deposition"  "mol/m2"
state    real  dryd_hno3   ivjf      dryd_ct           1         -      rh      "dryd_hno3"      "HNO3 accumulated deposition"  "mol/m2"
state    real  dryd_nh3    ivjf      dryd_ct           1         -      rh      "dryd_nh3"       "NH3 accumulated deposition"  "mol/m2"
state    real  dryd_pan    ivjf      dryd_ct           1         -      rh      "dryd_pan"       "PAN accumulated deposition"  "mol/m2"
state    real  dryd_o3     ivjf      dryd_ct           1         -      rh      "dryd_o3"        "O3 accumulated deposition"  "mol/m2"
state    real  dryd_h2o2   ivjf      dryd_ct           1         -      rh      "dryd_h2o2"      "H2O2 accumulated deposition"  "mol/m2"
state    real  dryd_hcho   ivjf      dryd_ct           1         -      rh      "dryd_hcho"      "HCHO accumulated deposition"  "mol/m2"
state    real  dryd_pso4   ivjf      dryd_ct           1         -      rh      "dryd_pso4"      "p-SO4 accumulated deposition"  "ug/m2"
state    real  dryd_pno3   ivjf      dryd_ct           1         -      rh      "dryd_pno3"      "p-NO3 accumulated deposition"  "ug/m2"
state    real  dryd_pnh4   ivjf      dryd_ct           1         -      rh      "dryd_pnh4"      "p-NH4 accumulated deposition"  "ug/m2"
state    real  dryd_ptc    ivjf      dryd_ct           1         -      rh      "dryd_ptc"       "p-TC accumulated deposition"  "ug/m2"
state    real  dryd_pcrust ivjf      dryd_ct           1         -      rh      "dryd_pcrust"    "p-Crustal accumulated deposition"  "ug/m2"
state    real  dryd_pseas  ivjf      dryd_ct           1         -      rh      "dryd_pseas"     "p-Sea_Salt accumulated deposition"  "ug/m2"
state    real  dryd_p25    ivjf      dryd_ct           1         -      rh      "dryd_p25"       "PM2.5 accumulated deposition"  "ug/m2"
...
# GC 20130410 drydep output
package   depvel2  diagnostic_chem==2                -             dryd_ct:dryd_so2,dryd_no2,dryd_hno3,dryd_nh3,dryd_pan,dryd_o3,dryd_h2o2,dryd_hcho,dryd_pso4,dryd_pno3,dryd_nh4,dryd_ptc,dryd_pcrust,dryd_pseas,dryd_p25
...

In chem/chem_driver.F

      if (config_flags%vertmix_onoff>0) then
         if (ktau.gt.2) then
            call wrf_debug(15,'calling dry_deposition_driver')
            call dry_dep_driver(grid%id,curr_secs,ktau,grid%dt,config_flags,          &
#if (NMM_CORE == 1)
                 grid%gmt,ijulian,t_phy,moist_trans,scalar_trans,p8w,t8w,vvel,    &
#endif
#if (EM_CORE == 1)
                 grid%gmt,ijulian,t_phy,moist,scalar,p8w,t8w,vvel,                &
#endif
                 rri,p_phy,chem,tracer,rho,dz8w,rh,grid%exch_h,grid%hfx,grid%dx,      &
                 grid%cldfra, grid%cldfra_old,grid%raincv_b,seasin,dustin,            &
                 grid%ccn1, grid%ccn2, grid%ccn3, grid%ccn4, grid%ccn5, grid%ccn6,    &
                 grid%qndropsource,grid%ivgtyp,grid%tsk,grid%gsw,grid%vegfra,pbl_h,   &
                 grid%rmol,grid%ust,grid%znt,grid%xlat,grid%xlong,                    &
                 zmid,z_at_w,grid%xland,grid%ash_fall,                                &
                 grid%h2oaj,grid%h2oai,grid%nu3,grid%ac3,grid%cor3,grid%asulf,        &
                 grid%ahno3,grid%anh3,grid%cvaro1,grid%cvaro2,grid%cvalk1,grid%cvole1,&
                 grid%cvapi1,grid%cvapi2,grid%cvlim1,grid%cvlim2,grid%dep_vel_o3,     &
                 emis_ant(ims,kms,jms,p_e_co),config_flags%kemit,                     &
                 config_flags%sf_urban_physics,numgas,current_month,dvel,grid%snowh,  &
                 ! GC 20130410 drydep output
                 grid%dryd_ct,                                                        &
                 ! GC
                 ids,ide, jds,jde, kds,kde,                                           &
                 ims,ime, jms,jme, kms,kme,                                           &
                 its,ite,jts,jte,kts,kte)

            if( config_flags%chem_opt == MOZART_KPP .or. &
                config_flags%chem_opt == MOZCART_KPP .or. &
                config_flags%chem_opt == MOZART_MOSAIC_4BIN_VBS0_KPP ) then
               call mozcart_lbc_set( chem, num_chem, grid%id, &
                                     ims, ime, jms, jme, kms, kme,    &
                                     its, ite, jts, jte, kts )
            end if

         end if

In chem/dry_dep_driver.F:

...
    subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags,      &
               gmt,julday,t_phy,moist,scalar,p8w,t8w,w,alt,               &
               p_phy,chem,tracer,rho_phy,dz8w,rh,exch_h,hfx,dx,           &
               cldfra, cldfra_old,raincv,seasin,dustin,                   &
               ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource,               &
               ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
               xland,ash_fall,h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,       &
               anh3,cvaro1,cvaro2,   &
               cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2,dep_vel_o3,      &
               e_co,kemit,sf_urban_physics,numgas,current_month,dvel,     &
               snowh,                                                     &
               ! GC 20130410 drydep output
               dryd_ct,                                                   &
               ! GC
               ids,ide, jds,jde, kds,kde,                                 &
               ims,ime, jms,jme, kms,kme,                                 &
               its,ite, jts,jte, kts,kte                                  )
...
! GC 20130410 drydep output
   REAL, DIMENSION( ims:ime , 1, jms:jme, num_dryd_ct ), INTENT(INOUT) :: dryd_ct
   REAL :: old, new, fac
   REAL, DIMENSION(num_chem) :: dryd_mass
! GC
...
         END SELECT mix_select

         ! GC 20130410 drydep output
         ! CK 20130116 write out dry deposition amounts >>

         ! chem is in ppmv
         ! dry deposition is mangled with vertical mixing, but column
         ! independent.
         ! Hence, all molecules lost per column must be dry deposited.

         ! old and new column totals (mol/m2 or ug/m2)
         old = 0.0
         new = 0.0

         do k=kts,kte-1
           fac = 1.0
           if (nv <= numgas) then
             ! from ppmv to mol/m2
             ! fac     = 1e-6 * rho * 1/mw_air * dz
             !                 kg/m3   mol/kg    m
             fac = 1e-6 * dryrho_1d(k) * 1./(mwdry*1.e3) * dz8w(i,k,j)
           else
             ! from ug/kg to ug/m2
             ! fac     = rho * dz
             !          kg/m3  m
             fac = dryrho_1d(k) * dz8w(i,k,j)
           endif

           old = old + max(epsilc,chem(i,k,j,nv)) * fac
           new = new + max(epsilc,pblst(k)) * fac
         enddo

         ! we add new dry deposition to existing field (accumulated deposition!)
         dryd_mass(nv) =  max( 0.0, (old - new) )

         ! CK <<

         do k=kts,kte-1
            chem(i,k,j,nv)=max(epsilc,pblst(k))
         enddo
      enddo
      ! GC 20130410 drydep output (AQMEII species only for now!)
      if( config_flags%diagnostic_chem == DEPVEL2 .and. &
          (config_flags%chem_opt == RACMSORG_AQ .or.    &
           config_flags%chem_opt == RACMSORG_AQCHEM .or.&
           config_flags%chem_opt == RACMSORG_KPP .or.   &
           config_flags%chem_opt == RADM2SORG .or.    &
           config_flags%chem_opt == RADM2SORG_AQ .or.&
           config_flags%chem_opt == RADM2SORG_AQCHEM .or.   &
           config_flags%chem_opt == RADM2SORG_KPP .or.   &
           config_flags%chem_opt == RACM_SOA_VBS_KPP ) ) then
        dryd_ct(i,1,j,p_dryd_so2)  = dryd_ct(i,1,j,p_dryd_so2)  + dryd_mass(p_so2)
        dryd_ct(i,1,j,p_dryd_no2)  = dryd_ct(i,1,j,p_dryd_no2)  + dryd_mass(p_no2)
        dryd_ct(i,1,j,p_dryd_hno3) = dryd_ct(i,1,j,p_dryd_hno3) + dryd_mass(p_hno3)
        dryd_ct(i,1,j,p_dryd_nh3)  = dryd_ct(i,1,j,p_dryd_nh3)  + dryd_mass(p_nh3)
        dryd_ct(i,1,j,p_dryd_pan)  = dryd_ct(i,1,j,p_dryd_pan)  + dryd_mass(p_pan)
        dryd_ct(i,1,j,p_dryd_o3)   = dryd_ct(i,1,j,p_dryd_o3)   + dryd_mass(p_o3)
        dryd_ct(i,1,j,p_dryd_h2o2) = dryd_ct(i,1,j,p_dryd_h2o2) + dryd_mass(p_h2o2)
        dryd_ct(i,1,j,p_dryd_hcho) = dryd_ct(i,1,j,p_dryd_hcho) + dryd_mass(p_hcho)
        dryd_ct(i,1,j,p_dryd_pso4) = dryd_ct(i,1,j,p_dryd_pso4) + &
                                     dryd_mass(p_so4ai) + dryd_mass(p_so4aj)
        dryd_ct(i,1,j,p_dryd_pno3) = dryd_ct(i,1,j,p_dryd_pno3) + &
                                     dryd_mass(p_no3ai) + dryd_mass(p_no3aj)
        dryd_ct(i,1,j,p_dryd_pnh4) = dryd_ct(i,1,j,p_dryd_pnh4) + &
                                     dryd_mass(p_nh4ai) + dryd_mass(p_nh4aj)
        dryd_ct(i,1,j,p_dryd_pcrust) = dryd_ct(i,1,j,p_dryd_pcrust) + dryd_mass(p_soila)
        dryd_ct(i,1,j,p_dryd_pseas) = dryd_ct(i,1,j,p_dryd_pseas) + &
                                     dryd_mass(p_naai) + dryd_mass(p_naaj) +&
                                     dryd_mass(p_clai) + dryd_mass(p_claj) +&
                                     dryd_mass(p_seas)
        if ( config_flags%chem_opt == RACM_SOA_VBS_KPP ) then
          dryd_ct(i,1,j,p_dryd_ptc) = dryd_ct(i,1,j,p_dryd_ptc) + &
                                      dryd_mass(p_orgpai) + dryd_mass(p_orgpaj) +&
                                      dryd_mass(p_asoa1i) + dryd_mass(p_asoa1j) +&
                                      dryd_mass(p_asoa2i) + dryd_mass(p_asoa2j) +&
                                      dryd_mass(p_asoa3i) + dryd_mass(p_asoa3j) +&
                                      dryd_mass(p_asoa4i) + dryd_mass(p_asoa4j) +&
                                      dryd_mass(p_bsoa1i) + dryd_mass(p_bsoa1j) +&
                                      dryd_mass(p_bsoa2i) + dryd_mass(p_bsoa2j) +&
                                      dryd_mass(p_bsoa3i) + dryd_mass(p_bsoa3j) +&
                                      dryd_mass(p_bsoa4i) + dryd_mass(p_bsoa4j) +&
                                      dryd_mass(p_eci)    + dryd_mass(p_ecj)
          dryd_ct(i,1,j,p_dryd_p25) = dryd_ct(i,1,j,p_dryd_p25) + &
                                      dryd_mass(p_so4ai)  + dryd_mass(p_so4aj)  +&
                                      dryd_mass(p_no3ai)  + dryd_mass(p_no3aj)  +&
                                      dryd_mass(p_nh4ai)  + dryd_mass(p_nh4aj)  +&
                                      dryd_mass(p_naai)   + dryd_mass(p_naaj)   +&
                                      dryd_mass(p_clai)   + dryd_mass(p_claj)   +&
                                      dryd_mass(p_orgpai) + dryd_mass(p_orgpaj) +&
                                      dryd_mass(p_asoa1i) + dryd_mass(p_asoa1j) +&
                                      dryd_mass(p_asoa2i) + dryd_mass(p_asoa2j) +&
                                      dryd_mass(p_asoa3i) + dryd_mass(p_asoa3j) +&
                                      dryd_mass(p_asoa4i) + dryd_mass(p_asoa4j) +&
                                      dryd_mass(p_bsoa1i) + dryd_mass(p_bsoa1j) +&
                                      dryd_mass(p_bsoa2i) + dryd_mass(p_bsoa2j) +&
                                      dryd_mass(p_bsoa3i) + dryd_mass(p_bsoa3j) +&
                                      dryd_mass(p_bsoa4i) + dryd_mass(p_bsoa4j) +&
                                      dryd_mass(p_eci)    + dryd_mass(p_ecj)
        else
          dryd_ct(i,1,j,p_dryd_ptc) = dryd_ct(i,1,j,p_dryd_ptc) + &
                                      dryd_mass(p_orgpai)   + dryd_mass(p_orgpaj)  +&
                                      dryd_mass(p_orgaro1i) + dryd_mass(p_orgaro1j)+&
                                      dryd_mass(p_orgaro2i) + dryd_mass(p_orgaro2j)+&
                                      dryd_mass(p_orgalk1i) + dryd_mass(p_orgalk1j)+&
                                      dryd_mass(p_orgole1i) + dryd_mass(p_orgole1j)+&
                                      dryd_mass(p_orgba1i)  + dryd_mass(p_orgba1j) +&
                                      dryd_mass(p_orgba2i)  + dryd_mass(p_orgba2j) +&
                                      dryd_mass(p_orgba3i)  + dryd_mass(p_orgba3j) +&
                                      dryd_mass(p_orgba4i)  + dryd_mass(p_orgba4j) +&
                                      dryd_mass(p_eci)      + dryd_mass(p_ecj)
          dryd_ct(i,1,j,p_dryd_p25) = dryd_ct(i,1,j,p_dryd_p25) + &
                                      dryd_mass(p_so4ai)    + dryd_mass(p_so4aj)   +&
                                      dryd_mass(p_no3ai)    + dryd_mass(p_no3aj)   +&
                                      dryd_mass(p_nh4ai)    + dryd_mass(p_nh4aj)   +&
                                      dryd_mass(p_naai)     + dryd_mass(p_naaj)    +&
                                      dryd_mass(p_clai)     + dryd_mass(p_claj)    +&
                                      dryd_mass(p_orgpai)   + dryd_mass(p_orgpaj)  +&
                                      dryd_mass(p_orgaro1i) + dryd_mass(p_orgaro1j)+&
                                      dryd_mass(p_orgaro2i) + dryd_mass(p_orgaro2j)+&
                                      dryd_mass(p_orgalk1i) + dryd_mass(p_orgalk1j)+&
                                      dryd_mass(p_orgole1i) + dryd_mass(p_orgole1j)+&
                                      dryd_mass(p_orgba1i)  + dryd_mass(p_orgba1j) +&
                                      dryd_mass(p_orgba2i)  + dryd_mass(p_orgba2j) +&
                                      dryd_mass(p_orgba3i)  + dryd_mass(p_orgba3j) +&
                                      dryd_mass(p_orgba4i)  + dryd_mass(p_orgba4j) +&
                                      dryd_mass(p_eci)      + dryd_mass(p_ecj)
        endif
      endif
      ! GC

In test/em_real/namelist.input:

...
&chem
...
 diagnostic_chem                     = 2,        2,
 /
...

Shortwave Radiation at top of the atmosphere (Goddard scheme)

In Registry/Registry.EM_COMMON:

state    real   rswtoa           ij     misc        1         -      h        "RSWTOA"               "Upward SW flux at TOA (W/m2)"
#TP
state    real   dswtoa          ij     misc        1         -      h        "DSWTOA"               "Downward SW flux at TOA (W/m2)"

In dyn_em/module_first_rk_step_part1.F

CALL radiation_driver(                                                  &
     &         ACFRCV=grid%acfrcv      ,ACFRST=grid%acfrst      ,ALBEDO=grid%albedo  &
     &        ,CFRACH=grid%cfrach      ,CFRACL=grid%cfracl      ,CFRACM=grid%cfracm  &
     &        ,CUPPT=grid%cuppt        ,CZMEAN=grid%czmean      ,DT=grid%dt          &
     &        ,DZ8W=dz8w               ,EMISS=grid%emiss        ,GLW=grid%glw        &
     &        ,GMT=grid%gmt            ,GSW=grid%gsw            ,HBOT=grid%hbot      &
     &        ,HTOP=grid%htop          ,HBOTR=grid%hbotr        ,HTOPR=grid%htopr    &
     &        ,ICLOUD=config_flags%icloud                                            &
     &        ,ITIMESTEP=grid%itimestep,JULDAY=grid%julday      , JULIAN=grid%julian &
     &        ,JULYR=grid%julyr        ,LW_PHYSICS=config_flags%ra_lw_physics        &
     &        ,NCFRCV=grid%ncfrcv      ,NCFRST=grid%ncfrst      ,NPHS=1              &
     &        ,P8W=grid%p_hyd_w        ,P=grid%p_hyd            ,PI=pi_phy           &
     &        ,RADT=grid%radt          ,RA_CALL_OFFSET=grid%ra_call_offset           &
     &        ,RHO=rho                 ,RLWTOA=grid%rlwtoa                           &

!TUCCELLA AQMEII(dswtoa)

     &        ,RSWTOA=grid%rswtoa      ,RTHRATEN=grid%rthraten, DSWTOA=grid%dswtoa   &

...

In phys/module_radiation_driver.F

 SUBROUTINE radiation_driver (                                  &
               ACFRCV ,ACFRST ,ALBEDO  &
              ,CFRACH ,CFRACL ,CFRACM  &
              ,CUPPT  ,CZMEAN ,DT      &
              ,DZ8W   ,EMISS  ,GLW     &
              ,GMT    ,GSW    ,HBOT    &
              ,HTOP   ,HBOTR  ,HTOPR   &
              ,ICLOUD                  &
              ,ITIMESTEP,JULDAY, JULIAN &
              ,JULYR  ,LW_PHYSICS       &
              ,NCFRCV ,NCFRST ,NPHS     &
              ,P8W    ,P ,PI            &
              ,RADT   ,RA_CALL_OFFSET   &
              ,RHO    ,RLWTOA           &

!!! TUCCELLA AQMEII (dswtoa)

              ,RSWTOA ,RTHRATEN,DSWTOA  &

...

   REAL, DIMENSION( ims:ime, jms:jme ),                           &
         INTENT(INOUT)  ::                                        &
                                                      RLWTOA,     & !Added
                                                      RSWTOA,     & !Added
                                                      ACFRST,     & !Added
                                                      ACFRCV,     & !Added
!!TUCCELLA AQMEII
                                                      DSWTOA

... 

CASE (GSFCSWSCHEME)
             CALL wrf_debug(100, 'CALL gsfcswrad')
             CALL GSFCSWRAD(                                           &
                     RTHRATEN=rthraten,GSW=gsw,XLAT=xlat,XLONG=xlong   &
                    ,ALB=albedo,T3D=t,P3D=p,P8W3D=p8w,pi3D=pi          &
                    ,DZ8W=dz8w,RHO_PHY=rho                             &

!! TUCCELLA (AQMEII)

                    ,CLDFRA3D=cldfra,RSWTOA=rswtoa,DSWTOA=dswtoa       &

In phys/module_ra_gsfcsw.F

SUBROUTINE GSFCSWRAD(rthraten,gsw,xlat,xlong                   &
                   ,dz8w,rho_phy                                  &
                   ,alb,t3d,qv3d,qc3d,qr3d                        &
                   ,qi3d,qs3d,qg3d,qndrop3d                       &

!!TUCCELLA AQMEII

                   ,p3d,p8w3d,pi3d,cldfra3d,rswtoa,DSWTOA

...
!! TUCCELLA AQMEII

   REAL, DIMENSION( ims:ime, jms:jme ),                           &
         INTENT(INOUT)  ::                                   GSW, &
                                                               RSWTOA, &
                                                              DSWTOA

...

!     upward top of atmosphere
      do i = its, ite
        if (cosz(i) .le. thresh) then
          RSWTOA(i,j) = 0.

!! TUCCELLA (AQMEII)

          DSWTOA(i,j)  = 0.

        else
          RSWTOA(i,j) = flx(i,kts) - flxd(i,kts) * SOLCON * cosz(i)

!! TUCCELLA (AQMEII)

          DSWTOA(i,j) = flxd(i,kts) * SOLCON * cosz(i)

        endif
      end do

Flux of dust and sea salt (MADE/SORGAM)

In Registry/registry.chem

## TUCCELLA (AQMEII)
# Dust flux
state    real  dust_flux     ij        misc           1         -      rhdu     "dust_flux"     "Dust Flux from Soil"  "ug/m2/s"
state    real  salt_flux     ij        misc           1         -      rhdu     "salt_flux"     "Sea Salt Flux"        "ug/m2/s"

# aerosol stuff
state    real  aerwrf         ikj     misc        1         -      r        "AERWRF"                "STANDARD AEROSOL PROFILE"            "?"

...

In chem/chem_driver.F

call emissions_driver(grid%id,ktau,grid%dt,grid%DX,

...
      ! stuff for the GHG fluxes
              vprm_in,grid%rad_vprm,grid%lambda_vprm,                                      &
              grid%alpha_vprm,grid%resp_vprm,grid%xtime,                                   &
              grid%TSLB, wet_in,grid%RAINC,grid%RAINNC,                                    &
              grid%potevp,grid%SFCEVP,grid%LU_INDEX,                                       &
              grid%biomt_par,grid%emit_par,grid%ebio_co2oce,                               &
              eghg_bio,                                                                    &
         !!! TUCCELLA (AQMEII)
         ! stuff for dust and seas flux
              grid%dust_flux,grid%salt_flux,                                               &
              ids,ide, jds,jde, kds,kde,                                                   &
              ims,ime, jms,jme, kms,kme,                                                   &
              its,ite,jts,jte,kts,kte)

...

In chem/emission_driver.F

subroutine emissions_driver(id,ktau,dtstep,DX,                         &
...

! stuff for GHG fluxes
         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,                          &

         !! TUCCELLA (AQMEII)
         ! stuff for dust and sea salt flux
         dust_flux,salt_flux,                                              &
         ids,ide, jds,jde, kds,kde,                                        &
         ims,ime, jms,jme, kms,kme,                                        &
         its,ite, jts,jte, kts,kte   

....

!! TUCCELLA (AQMEII)

REAL, DIMENSION( ims:ime, 1, jms:jme,num_emis_seas),   &
         OPTIONAL,                                                         &
         INTENT(INOUT ) ::                                                 &
         emis_seas

   REAL, DIMENSION( ims:ime,  jms:jme ),INTENT(OUT  ) :: dust_flux,salt_flux

....call sorgam_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, chem,  &
            ebu,                                                        &
            slai,ust,smois,ivgtyp,isltyp,                               &
            emis_ant,dust_emiss_active,                                 &
            seasalt_emiss_active,config_flags%kemit,                    &
            config_flags%biomass_burn_opt,                              &
            config_flags%num_soil_layers,config_flags%emiss_opt,        &
!jdf
            config_flags%dust_opt,                                      &
            ktau,p8w,u_phy,v_phy,rho_phy,g,dx,erod,                     &

        !!! TUCCELLA (AQMEII) 
       dust_flux,salt_flux,                                                   &

!jdf
            ids,ide, jds,jde, kds,kde,                                  &
            ims,ime, jms,jme, kms,kme,                                  &
            its,ite, jts,jte, kts,kte                                   )

...

In chem/module_aerosol_sorgam.F

SUBROUTINE sorgam_addemiss( id, dtstep, u10, v10, alt, dz8w, xland, chem,                      &
                             ebu,                                                               &
                             slai,ust,smois,ivgtyp,isltyp,                                      &
                             emis_ant,dust_emiss_active,                                        &
                             seasalt_emiss_active,kemit,biom,num_soil_layers,emissopt,          &
                             dust_opt,ktau,p8w,u_phy,v_phy,rho_phy,g,dx,erod,                   &
!!! TUCCELLA (AQMEII)
                             dust_flux,salt_flux,                                               &
                             ids,ide, jds,jde, kds,kde,                                         &
                             ims,ime, jms,jme, kms,kme,                                         &
                             its,ite, jts,jte, kts,kte                                          )

.
.
.

 REAL, DIMENSION( ims:ime, num_soil_layers, jms:jme ),    &
       INTENT(INOUT) ::   smois

!!! TUCCELLA (AQMEII)
  REAL,DIMENSION( ims:ime , jms:jme ),INTENT(OUT  ) :: dust_flux,salt_flux

...

if( dust_opt == 3 ) then
      call soa_vbs_dust_gocartemis(                                &
           ktau,dtstep,num_soil_layers,alt,u_phy,                 &
           v_phy,chem,rho_phy,dz8w,smois,u10,v10,p8w,erod,        &
           ivgtyp,isltyp,xland,dx,g,                              &

!! TUCCELLA (AQMEII)
           dust_flux,                                             &
           ids,ide, jds,jde, kds,kde,                             &
           ims,ime, jms,jme, kms,kme,                             &
           its,ite, jts,jte, kts,kte                              )
  end if

!====================================================================================
!add another dust emission scheme following GOCART mechanism  --czhao  09/17/2009
!====================================================================================
  subroutine sorgam_dust_gocartemis (ktau,dt,num_soil_layers,alt,u_phy,    &
         v_phy,chem,rho_phy,dz8w,smois,u10,v10,p8w,erod,                   &
         ivgtyp,isltyp,xland,dx,g,                                         &

!!TUCCELLA (AQMEII)
         dust_flux,                                                        &

        ids,ide, jds,jde, kds,kde,                                        &
         ims,ime, jms,jme, kms,kme,                                        &
         its,ite, jts,jte, kts,kte                                         )
.
.
.

REAL,  DIMENSION( ims:ime , kms:kme , jms:jme ),                        &
          INTENT(IN   ) ::                                                 &
                                                        alt,               &
                                                     dz8w,p8w,             &
                                              u_phy,v_phy,rho_phy
!! TUCCELLA (AQMEII)
  REAL,DIMENSION( ims:ime , jms:jme ),INTENT(OUT  ) :: dust_flux
  REAL, INTENT(IN   ) :: dt,dx,g

.
.
.

totalemis=(sum(bems(1:5))/dt)*converi/dxy

!! TUCCELLA (AQMEII)
    dust_flux(i,j)=totalemis

...

if( seasalt_emiss_active == 1 ) then
     call sorgam_seasalt_emiss(                                 &
          dtstep, u10, v10, alt, dz8w, xland, chem,              &

!!TUCCELLA (AQMEII)
          salt_flux,                                             &

          ids,ide, jds,jde, kds,kde,                             &
          ims,ime, jms,jme, kms,kme,                             &
          its,ite, jts,jte, kts,kte                              )

...

SUBROUTINE sorgam_seasalt_emiss(                                        &
     dtstep, u10, v10, alt, dz8w, xland, chem,                          &

!!TUCCELLA (AQMEII)
     salt_flux,                                                         &

     ids,ide, jds,jde, kds,kde,                                         &
     ims,ime, jms,jme, kms,kme,                                         &
     its,ite, jts,jte, kts,kte                                          )

.
.
.

  REAL,  DIMENSION( ims:ime , kms:kme , jms:jme ),                     &
         INTENT(IN   ) ::   alt, dz8w

!! TUCCELLA (AQMEII)
   REAL,DIMENSION(  ims:ime ,jms:jme ),INTENT(OUT  ) :: salt_flux

.
.
.!   Loop over i,j and apply seasalt emissions
    k = kts

!! TUCCELLA (AQMEII)
    salt_flux = 0.0

.
.
.

factaa = (dtstep/dz8w(i,k,j))*alt(i,k,j)
       factbb = factaa * dumspd10

!! TUCCELLA (AQMEII)
    salt_flux(i,j) = dumspd10*ssemfact_mass_i + dumspd10*ssemfact_mass_j + &
                dumspd10*ssemfact_mass_c

Accumulated wet deposition from large scale precipitation

In Registry/registry.chem

#
# Wet deposition
#

state    real  wd_so4_sc     ij        misc           1         -      rhdu     "wd_so4_sc"     "SO4 surface wet deposition, accumulated (Sc)"            "mmol/m2"
state    real  wd_no3_sc     ij        misc           1         -      rhdu     "wd_no3_sc"     "NO3 surface wet deposition, accumulated (Sc)"            "mmol/m2"
# TUCCELLA AQMEII
state    real  wd_nh4_sc     ij        misc           1         -      rhdu     "wd_nh4_sc"     "NH4 surface wet deposition, accumulated (Sc)"            "mmol/m2"
state    real  wd_om_sc      ij        misc           1         -      rhdu     "wd_om_sc"      "OM surface wet deposition, accumulated (Sc)"             "mmol/m2"
state    real  wd_hno3_sc    ij        misc           1         -      rhdu     "wd_hno3_sc"    "HNO3+HNO4 surface wet deposition, accumulated (Sc)"           "mmol/m2"
state    real  wd_nh3_sc     ij        misc           1         -      rhdu     "wd_nh3_sc"     "NH3 surface wet deposition, accumulated (Sc)"            "mmol/m2"
state    real  wd_sulf_sc    ij        misc           1         -      rhdu     "wd_sulf_sc"    "SO2+H2SO4 surface wet deposition, accumulated (Sc)"      "mmol/m2"

In chem/chem_driver.F

if (config_flags%wetscav_onoff > 0) then
        call wetscav_driver (grid%id,ktau,grid%dt,grid%ktauc,config_flags,dtstepc,    &
#if (NMM_CORE == 1)
              rri,t_phy,moist_trans,p8w,t8w,                                          &
#endif
#if (EM_CORE == 1)
              rri,t_phy,moist,p8w,t8w,                                                &
#endif
              grid%dx, grid%dy,                                                       &
              p_phy,chem,rho,grid%cldfra,grid%cldfra2,                                &
              grid%rainprod,grid%evapprod,grid%hno3_col_mdel,                         &
              grid%qlsink,grid%precr,grid%preci,grid%precs,grid%precg,                &
              gas_aqfrac, numgas_aqfrac,dz8w,                                         &
              grid%h2oaj,grid%h2oai,grid%nu3,grid%ac3,grid%cor3,                      &
              grid%asulf,grid%ahno3,grid%anh3,grid%cvaro1,grid%cvaro2,                &
              grid%cvalk1,grid%cvole1,grid%cvapi1,grid%cvapi2,                        &
              grid%cvlim1,grid%cvlim2,                                                &
              grid%wd_no3_sc,grid%wd_so4_sc,                                          &

              ! TUCCELLA AQMEII
              grid%wd_nh4_sc,grid%wd_om_sc,grid%wd_hno3_sc,                           &
              grid%wd_nh3_sc,grid%wd_sulf_sc,                                         &

              grid%qv_b4mp, grid%qc_b4mp, grid%qi_b4mp, grid%qs_b4mp,                 &
              ids,ide, jds,jde, kds,kde,                                              &
              ims,ime, jms,jme, kms,kme,                                              &
              its,ite, jts,jte, kts,kte)

In chem/module_wetscav_driver.F

MODULE module_wetscav_driver.F

  REAL, PARAMETER :: mwso4 = 96.00   ! Molecular mass of SO4-- (g/mol)
  REAL, PARAMETER :: mwno3 = 62.0    ! Molecular mass of NO3- (g/mol)

!TUCCELLA AQMEII
  REAL, PARAMETER :: mwnh4 = 18.0    ! Molecular mass of NH4+ (g/mol)
  REAL, PARAMETER :: mwoth = 170.0   ! Molecular mass of OM (g/mol)

CONTAINS

.
.
.

!
! Accumulated wet deposition
!
!  TUCCELLA AQMEII
   REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT) :: wd_no3,wd_so4,&
                                         wd_nh4,wd_om,wd_nh3,wd_hno3,   &
                                         wd_sulf

.
.
.

! Wet deposition over the current time step
!
! TUCCELLA AQMEII
  REAL, DIMENSION( ims:ime , jms:jme ) :: wdi_no3,wdi_so4,wdi_nh4,wdi_om,&
                                          wdi_sulf,wdi_nh3,wdi_hno3

.
.
.

!!! TUCCELLA (AQMEII)

      CASE ( RADM2SORG_AQ,RACMSORG_AQ,RADM2SORG_AQCHEM, &
                RACMSORG_AQCHEM )

      do jj=jts,jte
        do ii=its,ite

          ! Nitrate wet deposition over the current time step:
          !wdi_no3(ii,jj) = - 0.001*qsrflx(ii,jj,p_no3cwj)/mwno3 &
          !                 - 0.001*qsrflx(ii,jj,p_no3cwi)/mwno3  ! mmol/m2

          ! Accumulated nitrate wet deposition:
          !wd_no3(ii,jj) = wd_no3(ii,jj) + wdi_no3(ii,jj)         ! mmol/m2

          ! Sulfate wet deposition over the current time step:
          !wdi_so4(ii,jj) = - 0.001*qsrflx(ii,jj,p_so4cwj)/mwso4 &
          !                 - 0.001*qsrflx(ii,jj,p_so4cwi)/mwso4 &
          !                 - qsrflx(ii,jj,p_sulf) &
          !                 - qsrflx(ii,jj,p_so2)                 ! mmol/m2

          ! Accumulated sulfate wet deposition:
          !wd_so4(ii,jj) = wd_so4(ii,jj) + wdi_so4(ii,jj)         ! mmol/m2

          ! Particle Nitrate wet deposition over the current time step:
          wdi_no3(ii,jj) = - 0.001*(qsrflx(ii,jj,p_no3cwj) + &
                                    qsrflx(ii,jj,p_no3cwi) + &
                                    qsrflx(ii,jj,p_no3ai)  + &
                                    qsrflx(ii,jj,p_no3aj))/mwno3

         ! Accumulated particle nitrate wet deposition:
          wd_no3(ii,jj) = wd_no3(ii,jj) + wdi_no3(ii,jj)         ! mmol/m2

          ! HNO3 wet deposition over the current time step:
          wdi_hno3(ii,jj) = -(qsrflx(ii,jj,p_hno3) + &
                              qsrflx(ii,jj,p_hno4))

          ! Accumulated HNO3 wet deposition:
          wd_hno3(ii,jj) = wd_hno3(ii,jj) + wdi_hno3(ii,jj)

          ! Particle Sulfate wet deposition over the current time step:
          wdi_so4(ii,jj) = - 0.001*(qsrflx(ii,jj,p_so4cwj) + &
                                    qsrflx(ii,jj,p_so4cwi) + &
                                    qsrflx(ii,jj,p_so4ai)  + &
                                    qsrflx(ii,jj,p_so4aj))/mwso4  !mmol/m2

          ! GAS Sulfate wet deposition over the current time step:
          wdi_sulf(ii,jj)=  - (qsrflx(ii,jj,p_sulf) &
                              + qsrflx(ii,jj,p_so2)) ! mmol/m2

          ! Accumulated  sulfate wet deposition:
          wd_so4(ii,jj) = wd_so4(ii,jj) + wdi_so4(ii,jj)         ! mmol/m2
          wd_sulf(ii,jj) = wd_sulf(ii,jj) + wdi_sulf(ii,jj)      ! mmol/m2

          ! Particle Ammonium wet deposition over the current time step:
          wdi_nh4(ii,jj) = - 0.001*(qsrflx(ii,jj,p_nh4cwj) + &
                                    qsrflx(ii,jj,p_nh4cwi) + &
                                    qsrflx(ii,jj,p_nh4ai)  + &
                                    qsrflx(ii,jj,p_nh4aj))/mwnh4

         ! Accumulated particle ammonium wet deposition:
          wd_nh4(ii,jj) = wd_nh4(ii,jj) + wdi_nh4(ii,jj)         ! mmol/m2

          ! NH3 wet deposition over the current time step:
          wdi_nh3(ii,jj) = - qsrflx(ii,jj,p_nh3)                 ! mmol/m2

          ! Accumulated NH3 wet deposition:
          wd_nh3(ii,jj) = wd_nh3(ii,jj) +  wdi_nh3(ii,jj)         ! mmol/m2                

          ! Organic Matter wet deposition over the current time step:
          !! IN SORGAM BIOGENIC SOAa ARE ZERO
          wdi_om(ii,jj) = - 0.001*(qsrflx(ii,jj,p_orgpacwi)   + &
                                   qsrflx(ii,jj,p_orgpacwj)   + &
                                   qsrflx(ii,jj,p_orgaro1cwj) + &
                                   qsrflx(ii,jj,p_orgaro1cwi) + &
                                   qsrflx(ii,jj,p_orgaro2cwj) + &
                                   qsrflx(ii,jj,p_orgaro2cwi) + &
                                   qsrflx(ii,jj,p_orgalk1cwj) + &
                                   qsrflx(ii,jj,p_orgalk1cwi) + &
                                   qsrflx(ii,jj,p_orgole1cwj) + &
                                   qsrflx(ii,jj,p_orgole1cwi) + &
                                   qsrflx(ii,jj,p_orgpai)   + &
                                   qsrflx(ii,jj,p_orgpaj)   + &
                                   qsrflx(ii,jj,p_orgaro1j) + &
                                   qsrflx(ii,jj,p_orgaro1i) + &
                                   qsrflx(ii,jj,p_orgaro2j) + &
                                   qsrflx(ii,jj,p_orgaro2i) + &
                                   qsrflx(ii,jj,p_orgalk1j) + &
                                   qsrflx(ii,jj,p_orgalk1i) + &
                                   qsrflx(ii,jj,p_orgole1j) + &
                                   qsrflx(ii,jj,p_orgole1i))/mwoth

            ! Accumulated Organic Matter wet deposition:
          wd_om(ii,jj) = wd_om(ii,jj) + wdi_om(ii,jj)         ! mmol/m2

        enddo
      enddo

Accumulated wet scavenging from cumulus convection

In Registry/registry.chem

state    real  wd_so4_cu     ij        misc           1         -      rhdu     "wd_so4_cu"     "SO4 surface wet deposition, accumulated (Cu)"            "mmol/m2"
state    real  wd_no3_cu     ij        misc           1         -      rhdu     "wd_no3_cu"     "NO3 surface wet deposition, accumulated (Cu)"            "mmol/m2"

# TUCCELLA AQMEII
state    real  wd_nh4_cu     ij        misc           1         -      rhdu     "wd_nh4_cu"     "NH4 surface wet deposition, accumulated (Cu)"            "mmol/m2"
state    real  wd_om_cu     ij        misc           1          -      rhdu     "wd_om_cu"     "OM surface wet deposition, accumulated (Cu)"            "mmol/m2"
state    real  wd_nh3_cu     ij        misc           1         -      rhdu     "wd_nh3_cu"     "NH3 surface wet deposition, accumulated (Cu)"            "mmol/m2"
state    real  wd_hno3_cu     ij        misc           1         -      rhdu     "wd_hno3_cu"     "HNO3+HNO4 surface wet deposition, accumulated (Cu)"            "mmol/m2"
state    real  wd_sulf_cu     ij        misc           1         -      rhdu     "wd_sulf_cu"     "SO2+H2SO4 surface wet deposition, accumulated (Cu)"            "mmol/m2"

In chem/chem_driver.F

 call grelldrvct(grid%DT,ktau,grid%DX,                                         &
             rho,grid%RAINCV_B,chem,                                                  &
#if (NMM_CORE == 1)
             U_phy,V_phy,t_phy,moist_trans,dz8w,                                      &
#endif
#if (EM_CORE == 1)
             U_phy,V_phy,t_phy,moist,dz8w,                                            &
#endif
             p_phy,XLV,CP,G,r_v,                                                      &
             z_at_w,grid%cu_co_ten,                                                   &
             grid%ktop,grid%wd_no3_cu,grid%wd_so4_cu,grid%wd_nh4_cu,                  &

             !!!TUCCELLA AQMEII
             grid%wd_om_cu,grid%wd_nh3_cu,grid%wd_hno3_cu,grid%wd_sulf_cu,            &

             grid%k22_shallow,grid%kbcon_shallow,grid%ktop_shallow,grid%xmb_shallow,  &
             config_flags%ishallow,num_moist,numgas,num_chem,config_flags%chem_opt,0, &
             config_flags%conv_tr_wetscav,config_flags%conv_tr_aqchem,                &
             ids,ide, jds,jde, kds,kde,                                               &
             ims,ime, jms,jme, kms,kme,                                               &
             its,ite,jts,jte,kts,k_end)

.
.
.

 if (config_flags%tracer_opt > 0)then
        call wrf_debug(15,'calling conv transport for tracers')
        call grelldrvct(grid%DT,ktau,grid%DX,                    &
             rho,grid%RAINCV_B,tracer,                               &
#if (NMM_CORE == 1)
             U_phy,V_phy,t_phy,moist_trans,dz8w,                                      &
#endif         
#if (EM_CORE == 1)
             U_phy,V_phy,t_phy,moist,dz8w,                                            &
#endif
             p_phy,XLV,CP,G,r_v,                                                      &
             z_at_w, grid%cu_co_ten,                                                  &
             grid%ktop,grid%wd_no3_cu,grid%wd_so4_cu,grid%wd_nh4_cu,                  &

             !!!TUCCELLA AQMEII
             grid%wd_om_cu,grid%wd_nh3_cu,grid%wd_hno3_cu,grid%wd_sulf_cu,            &

             grid%k22_shallow,grid%kbcon_shallow,grid%ktop_shallow,grid%xmb_shallow,  &
             config_flags%ishallow,num_moist,0,num_tracer,0,config_flags%tracer_opt,  &
             config_flags%conv_tr_wetscav,config_flags%conv_tr_aqchem,                &
             ids,ide, jds,jde, kds,kde,                                               &
             ims,ime, jms,jme, kms,kme,                                               &
             its,ite,jts,jte,kts,k_end)

          end if
     end if

In chem/module_ctrans_grell.F

!WRF:ODEL_LAYER:PHYSICS
!

MODULE module_ctrans_grell
USE module_cu_gd
USE module_dep_simple
USE module_state_description, only:p_co,p_qv,p_so2,p_hno3,p_hno4,p_n2o5,p_nh3,p_h2o2, &
                              p_o3,p_ora1,p_op1,p_paa,p_sulf,p_so4aj,p_nh4aj,p_no3aj, &

                              !!! TUCCELLA AQMEII
                              p_orgpaj,p_asoa1j,p_asoa2j,p_asoa3j,p_asoa4j,           &
                              p_bsoa1j,p_bsoa2j,p_bsoa3j,p_bsoa4j,                    &
                              p_orgaro1j,p_orgaro2j,p_orgalk1j,p_orgole1j,            &

                              p_bc1,p_bc2,p_oc1,p_oc2,p_seas_1,p_seas_2,              &
                              p_seas_3,p_seas_4,p_dms

 REAL, PARAMETER :: qcldwtr_cutoff = 1.0e-6 ! kg/kg

  REAL, PARAMETER :: mwdry = 28.966  ! Molecular mass of dry air (g/mol)
  REAL, PARAMETER :: mwso4 = 96.00   ! Molecular mass of SO4-- (g/mol)
  REAL, PARAMETER :: mwno3 = 62.0    ! Molecular mass of NO3- (g/mol)
  REAL, PARAMETER :: mwnh4 = 18.0985 ! Molecular mass of NH4+ (g/mol)

!!! TUCCELLA AQMEII
  REAL, PARAMETER :: mwom  = 170.00  ! Molecular mass of OM (g/mol)
.
.
.

 SUBROUTINE GRELLDRVCT(DT,itimestep,DX,                           &
              rho_phy,RAINCV,chem,                                  &
              U,V,t_phy,moist,dz8w,p_phy,                           &
              XLV,CP,G,r_v,z,cu_co_ten,ktop_out,                    &
              wd_no3,wd_so4,wd_nh4,                                 &

              !!! TUCCELLA AQMEII
              wd_om,wd_nh3,wd_hno3,wd_sulf,                         &

              k22_shallow,kbcon_shallow,ktop_shallow,xmb_shallow,   &
              ishallow,num_moist,numgas,num_chem,chemopt,scalaropt, &
              conv_tr_wetscav,conv_tr_aqchem,                       &
              ids,ide, jds,jde, kds,kde,                            &
              ims,ime, jms,jme, kms,kme,                            &
              its,ite, jts,jte, kts,kte                             )

.
.
.

!
! Accumulated wet deposition
!

   REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT) :: wd_no3,wd_so4, &
                                                          wd_nh4,        &

                                                          !!!TUCCELLA AQMEII   
                                                          wd_om,wd_nh3,  &
                                                          wd_hno3,wd_sulf
.
.
.

! Wet deposition over the current time step
   REAL, DIMENSION( ims:ime , jms:jme ) :: wdi_no3,wdi_so4,wdi_nh4, &

                                           !!!TUCCELLAA AQMEII
                                           wdi_om,wdi_nh3,wdi_hno3, &
                                           wdi_sulf

.
.
.

! Calculate the wet deposition over the time step:

!!! TUCCELLA AQMEII 
   wdi_no3(:,:) = 0.0
   wdi_so4(:,:) = 0.0
   wdi_nh4(:,:) = 0.0
   wdi_om(:,:)  = 0.0
   wdi_nh3(:,:) = 0.0
   wdi_hno3(:,:)= 0.0
   wdi_sulf(:,:)= 0.0

   ! We use the indices of the chem array that point to aerosol outside of cloud water,
   ! because that's what the cumulus scheme operates with.

   if (p_no3aj .gt.1) wdi_no3(its:ite,jts:jte)  = wdi_no3(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_no3aj)*dt*0.001/mwno3 ! mmol/m2
   if (p_hno3  .gt.1) wdi_hno3(its:ite,jts:jte) = wdi_hno3(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_hno3)*dt             ! mmol/m2

if (p_hno4  .gt.1) wdi_hno3(its:ite,jts:jte) = wdi_hno3(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_hno4)*dt             ! mmol/m2

   if (p_so4aj .gt.1) wdi_so4(its:ite,jts:jte)  = wdi_so4(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_so4aj)*dt*0.001/mwso4 ! mmol/m2
   if (p_sulf  .gt.1) wdi_sulf(its:ite,jts:jte) = wdi_sulf(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_sulf)*dt             ! mmol/m2
   if (p_so2   .gt.1) wdi_sulf(its:ite,jts:jte) = wdi_sulf(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_so2)*dt              ! mmol/m2

   if (p_nh4aj .gt.1) wdi_nh4(its:ite,jts:jte) = wdi_nh4(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_nh4aj)*dt*0.001/mwnh4  ! mmol/m2
   if (p_nh3   .gt.1) wdi_nh3(its:ite,jts:jte) = wdi_nh3(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_nh3)*dt

   if (p_orgpaj.gt.1) wdi_om(its:ite,jts:jte) = wdi_om(its:ite,jts:jte) + wetdep_2d(its:ite,jts:jte,p_orgpaj)*dt*0.001/mwom    ! mmol/m2

   !!! RACM-SOA-VBS
   if (p_asoa1j.gt.1) wdi_om(its:ite,jts:jte) = wdi_om(its:ite,jts:jte) + &
                                                (wetdep_2d(its:ite,jts:jte,p_asoa1j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_asoa2j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_asoa3j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_asoa4j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_bsoa1j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_bsoa2j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_bsoa3j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_bsoa4j))*dt*0.001/mwom    ! mmol/m2

!!! SORGAM
   if(p_orgaro1j.gt.1) wdi_om(its:ite,jts:jte) = wdi_om(its:ite,jts:jte) + &
                                                (wetdep_2d(its:ite,jts:jte,p_orgaro1j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_orgaro2j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_orgalk1j) + &
                                                 wetdep_2d(its:ite,jts:jte,p_orgole1j))*dt*0.001/mwom    ! mmol/m2

   ! Update the accumulated wet deposition:

   wd_no3(its:ite,jts:jte) = wd_no3(its:ite,jts:jte) + wdi_no3(its:ite,jts:jte) ! mmol/m2
   wd_so4(its:ite,jts:jte) = wd_so4(its:ite,jts:jte) + wdi_so4(its:ite,jts:jte) ! mmol/m2
   wd_nh4(its:ite,jts:jte) = wd_nh4(its:ite,jts:jte) + wdi_nh4(its:ite,jts:jte) ! mmol/m2   
   wd_om(its:ite,jts:jte)  = wd_om(its:ite,jts:jte) + wdi_om(its:ite,jts:jte)   ! mmol/m2
   wd_nh3(its:ite,jts:jte) = wd_nh3(its:ite,jts:jte) + wdi_nh3(its:ite,jts:jte) ! mmol/m2
   wd_hno3(its:ite,jts:jte) = wd_hno3(its:ite,jts:jte) + wdi_hno3(its:ite,jts:jte) ! mmol/m2

   END SUBROUTINE GRELLDRVCT

.
.
.

SUBROUTINE  cup_dd_tracer ...

.
.
.

do i=its,itf

        IF(ierr(I).eq.0)then

          do nv=1,numgas ! Only gas phase species evaporate along with rain water

            do k=ktf,kts,-1 ! Descending loop over all levels

              ! Start with initializing the condensate with the tracer amount in rain water on this level:
              condensate = tr_pw(i,k,nv)

              do kj=k,kts,-1 ! Descending loop over this and lower levels
                ! Evaporated tracer amount at the current level:
                evaporate = condensate*pwdper(i,kj)
                ! Accumulate the evaporated tracer amount:
                tr_pwd(i,kj,nv) = tr_pwd(i,kj,nv) + evaporate
                ! Remove the evaporated tracer amount from the condensate:
                condensate = max(0.0,condensate - evaporate)
              enddo

            enddo

            ! Calculate the wet deposition as the column integral over the
            ! tracer amount in rain water - evaporated tracer amount:

            do k=kts,ktf
              wetdep(i,nv) = wetdep(i,nv) + tr_pw(i,k,nv) - tr_pwd(i,k,nv)
            enddo

! Calculate the wet deposition as the column integral over the
            ! tracer amount in rain water - evaporated tracer amount:

            do k=kts,ktf
              wetdep(i,nv) = wetdep(i,nv) + tr_pw(i,k,nv) - tr_pwd(i,k,nv)
            enddo

            wetdep(i,nv) = max(0.0,wetdep(i,nv))

          enddo

!!! TUCCELLA (AQMEII)
          do nv=1,num_chem
            if(nv.gt.numgas) then

              do k=kts,ktf
                 wetdep(i,nv) = wetdep(i,nv) + tr_pw(i,k,nv)
              enddo

              wetdep(i,nv) = max(0.0,wetdep(i,nv))

            endif
          enddo
!!!
        endif

      enddo
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License