WRF-Chem version used: 3.4.1 with adaptations with Special adaptations for AQMEII2.
Many adaptations are related to special output for AQMEII. Some of these addions follow the description of 'WRF-Chem at University of L'Aquila' if not mentioned otherwise below.
The RADM2 gas phase chemistry with MADE/Sorgam and some aqueous rections (chem_opt=41) was applied for the simulations.
In addition to the modifications related to the output, a modifcation was made to module_radm.F, in order to improve the titration of ozone for high NOx at night time:
SUBROUTINE integ1n
...
!*******[NO]:
! VC(J,1,LNO) = VCL(J,LNOX) - VC(J,1,LNO2)
! VC(J,1,LNO) = MAX(CMIN(LNO),VC(J,1,LNO))
! 8/31/00 Calculate steady state NO from NO2,O3 ...etc., renormalize NO,
!23456789 123456789 123456789 123456789 123456789 123456789 123456789 12
! jprod(j) = rj(j,1)*vc(j,1,lno2) + rj(j,4)*vc(j,1,lhono) + &
! rj(j,8)*vc(j,1,lno3)
! jloss(j) = rk(j,6)*vc(j,1,lo3) + rk(j,9)*vc(j,1,lho2) + &
! rk(j,15)*vc(j,1,lho) + rk(j,16)*vc(j,1,lno) + &
! rk(j,18)*vc(j,1,lno3) + rk(j,57)*dvc(j,lmo2) + &
! rk(j,58)*dvc(j,lhc3p) + rk(j,60)*dvc(j,lhc5p) + &
! rk(j,62)*dvc(j,lhc8p) + rk(j,64)*dvc(j,lol2p) + &
! rk(j,65)*dvc(j,loltp) + rk(j,66)*dvc(j,lolip) + &
! rk(j,67)*dvc(j,ltco3) + rk(j,68)*dvc(j,ltco3) + &
! rk(j,69)*dvc(j,ltolp) + rk(j,70)*dvc(j,lxylp) + &
! rk(j,71)*dvc(j,lethp) + rk(j,72)*dvc(j,lketp) + &
! rk(j,73)*dvc(j,loln) + rk(j,131)*dvc(j,lxo2)
! eqno = max(cmin(lno),jprod(j)/max(epsilc,jloss(j)))
! EQNO=MAX(1.e-6,JPROD(J)/MAX(EPSILC,JLOSS(J)))
!*******[NO]:
vc(j,1,lno) = max(1.e-6,eqno*vcl(j,lnox)/(eqno+vc(j,1,lno2)))
vc(j,1,lno2) = vc(j,1,lno2)*vcl(j,lnox)/(eqno+vc(j,1,lno2))
Output of VOC reactivities was adapted to the RADM solver within module_radm.F (Univ. of L'Aquila is using a KPP solver here):
subroutine radm_driver
...
! .. Local Arrays ..
REAL :: p(kts:kte), rh(kts:kte), rj(kts:kte,nreacj), &
t(kts:kte), vcinp(kts:kte,numchem),wlc(kts:kte)
real :: vdrog1(kts:kte,ldrog)
real :: vc_vocr_nmvoc(kts:kte)
real :: vc_nume(kts:kte)
real :: vc_den(kts:kte)
...
vcinp(k,Lho2) = max(chem(i,k,j,p_ho2),epsilc)
vc_vocr_nmvoc(k) = 0.0
vc_nume(k) = 0.0
vc_den(k) = 0.0
! if(iprt.eq.2)then
! print *,k,chem(i,k,j,p_sulf),vcinp(k,lsulf)
! endif
enddo
!--- now do chemistry, need some input here
...
CALL radm(rj,wlc,vcinp,t,p,rh,vc_vocr_nmvoc,vc_nume,vc_den,xtime,xtimin,kts,kte, &
iprt,dt60,dtcmax,dtcmin,vdrog1,iaerosol_sorgam)
...
chem(i,k,j,p_ho) = max(vcinp(k,Lho),epsilc)
chem(i,k,j,p_ho2) = max(vcinp(k,Lho2),epsilc)
chem(i,k,j,p_vocr_nmvoc) = vc_vocr_nmvoc(k)
chem(i,k,j,p_nume) = vc_nume(k)
chem(i,k,j,p_den) = vc_den(k)
if(p_nu0.gt.1)then
...
END SUBROUTINE radm_driver
SUBROUTINE radm(rjj,wlcc,vcinp,tinp,pinp,rhinp, &
vc_vocr_nmvoc,vc_nume,vc_den,tstart,timemx, &
jcs,jce,iprt,dt60,dtcmax,dtcmin,vdrog,iaerosol_sorgam)
...
REAL,INTENT(IN) :: rjj(jcs:jce,nreacj), &
wlcc(jcs:jce), tinp(jcs:jce),pinp(jcs:jce),rhinp(jcs:jce), &
vc_vocr_nmvoc(jcs:jce),vc_nume(jcs:jce),vc_den(jcs:jce)
...
IF (iprt==1) PRINT *, ' radm', lho2, vc(jcs:jce,1,3), vc(jcs:jce,1,7), &
vc(jcs:jce,1,lho2)
DO j = jcs, jce
vc_vocr_nmvoc(j)=0.
vc_nume(j)=0.
vc_den(j)=0.
END DO
DO l = 1, lpred
...
DO j = jcs, jce
vc_vocr_nmvoc(j)=(crk(j,31)+crk(j,32)+crk(j,33)+crk(j,34)+crk(j,35)+ &
crk(j,36)+crk(j,37)+crk(j,38)+crk(j,39)+crk(j,40)+ &
crk(j,41)+crk(j,42)+crk(j,43)+crk(j,44)+crk(j,45)+ &
crk(j,46)+crk(j,47)+crk(j,48)+crk(j,49)+crk(j,50)+ &
crk(j,51)+crk(j,52))/ vcinp(j,lho)
vc_nume(j) =(crk(j, 9)+crk(j,58)+crk(j,60)+crk(j,62)+crk(j,64)+ &
crk(j,65)+crk(j,66)+crk(j,67)+crk(j,68)+crk(j,69)+ &
crk(j,70)+crk(j,71)+crk(j,72)+crk(j,73)+crk(j,57)+ &
crk(j,131) + &
crk(j,20)) !NO3
vc_den(j) =(crk(j,12)+crk(j,13)+crk(j,88)+crk(j,90)+crk(j,91)+ &
crk(j,92)+crk(j,93)+crk(j,95)+crk(j,95)+crk(j,96)+ &
crk(j,97)+crk(j,98)+crk(j,99)+crk(j,100)+crk(j,101)+ &
crk(j,115)+crk(j,116)+crk(j,117)+crk(j,118)+crk(j,119)+ &
crk(j,120)+crk(j,121)+crk(j,122)+crk(j,113)+crk(j,124)+ &
crk(j,125)+crk(j,126)+crk(j,127)+crk(j,129)+crk(j,133)+ &
crk(j,135)+crk(j,138)+crk(j,139)+crk(j, 88)+crk(j,102)+ &
crk(j,103)+crk(j,104)+crk(j,105)+crk(j,106)+crk(j,107)+ &
crk(j,103)+crk(j,109)+crk(j,110)+crk(j,111)+crk(j,112)+ &
crk(j,114)+crk(j,128)+crk(j,134))
! convert vc_vocr_nmvoc from ppm/min to 1/sec
vc_vocr_nmvoc(j)=vc_vocr_nmvoc(j)/60./1.e6
! Please note that die division by 1.e6 is wrong!!!!!! Results must by multiplied by thois value again in postprocessing!
! ####################################################################
END DO
RETURN
END SUBROUTINE radm
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"
....
package radm2 chem_opt==1 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,paa,ora1,ora2,nh3,n2o5,no3,pan,hc3,hc5,hc8,eth,co,ol2,olt,oli,tol,xyl,aco3,tpan,hono,hno4,ket,gly,mgly,dcb,onit,csl,iso,hcl,ho,ho2,nume,den,sumro2,vocr_co,vocr_nmvoc
package radm2sorg chem_opt==2 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,paa,ora1,ora2,nh3,n2o5,no3,pan,hc3,hc5,hc8,eth,co,ol2,olt,oli,tol,xyl,aco3,tpan,hono,hno4,ket,gly,mgly,dcb,onit,csl,iso,hcl,ho,ho2,nume,den,sumro2,vocr_co,vocr_nmvoc,so4aj,so4ai,nh4aj,nh4ai,no3aj,no3ai,naaj,naai,claj,clai,orgaro1j,orgaro1i,orgaro2j,orgaro2i,orgalk1j,orgalk1i,orgole1j,orgole1i,orgba1j,orgba1i,orgba2j,orgba2i,orgba3j,orgba3i,orgba4j,orgba4i,orgpaj,orgpai,ecj,eci,p25j,p25i,antha,seas,soila,nu0,ac0,corn
package radm2sorg_aq chem_opt==11 - chem:so2,sulf,no2,no,o3,hno3,h2o2,ald,hcho,op1,op2,paa,ora1,ora2,nh3,n2o5,no3,pan,hc3,hc5,hc8,eth,co,ol2,olt,oli,tol,xyl,aco3,tpan,hono,hno4,ket,gly,mgly,dcb,onit,csl,iso,hcl,ho,ho2,nume,den,sumro2,vocr_co,vocr_nmvoc,so4aj,so4ai,nh4aj,nh4ai,no3aj,no3ai,naaj,naai,claj,clai,orgaro1j,orgaro1i,orgaro2j,orgaro2i,orgalk1j,orgalk1i,orgole1j,orgole1i,orgba1j,orgba1i,orgba2j,orgba2i,orgba3j,orgba3i,orgba4j,orgba4i,orgpaj,orgpai,ecj,eci,p25j,p25i,antha,seas,soila,nu0,ac0,corn,so4cwj,so4cwi,nh4cwj,nh4cwi,no3cwj,no3cwi,nacwj,nacwi,clcwj,clcwi,orgaro1cwj,orgaro1cwi,orgaro2cwj,orgaro2cwi,orgalk1cwj,orgalk1cwi,orgole1cwj,orgole1cwi,orgba1cwj,orgba1cwi,orgba2cwj,orgba2cwi,orgba3cwj,orgba3cwi,orgba4cwj,orgba4cwi,orgpacwj,orgpacwi,eccwj,eccwi,p25cwj,p25cwi,anthcw,seascw,soilcw,nu0cw,ac0cw,corncw