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.
Table of Contents
|
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