diff --git a/src/MNH/BASIC.f90 b/src/MNH/BASIC.f90 index cd557a6ee78af6b2e34bbb00b012c01e8de81129..854c2bc061371c9013b47bae9cbb93f6b8f0d6b0 100644 --- a/src/MNH/BASIC.f90 +++ b/src/MNH/BASIC.f90 @@ -29185,7 +29185,7 @@ REAL,DIMENSION(:,:,:,:), INTENT(IN) :: PJVALUES ! Tuv coefficient ! /BEGIN_SET_PHOTO_RATES/ ! parameter for use by subroutine JVALUES, ! contains the actual photolysis rates -REAL, DIMENSION(KVECNPT,41) :: ZRATESIO ! TUV photolysis rates at one level +REAL, DIMENSION(KVECNPT,42) :: ZRATESIO ! TUV photolysis rates at one level REAL, DIMENSION(KVECNPT,19) :: ZRATES ! photolysis rates of RACM (vector) INTEGER :: JITPK ! loop counter for J-Value transfer INTEGER :: IDTI,IDTJ @@ -29247,8 +29247,8 @@ DO JITPK = 0, KVECNPT-1 ZRATES(JITPK+1, 17) = 0.20*ZRATESIO(JITPK+1,20)& &+ 0.80*ZRATESIO(JITPK+1,21) ! aqueous phase photolysis - ZRATES(JITPK+1, 18) = ZRATESIO(JITPK+1,40) - ZRATES(JITPK+1, 19) = ZRATESIO(JITPK+1,41) + ZRATES(JITPK+1, 18) = ZRATESIO(JITPK+1,41) + ZRATES(JITPK+1, 19) = ZRATESIO(JITPK+1,42) ! END DO ! diff --git a/src/MNH/ch_f77.fx90 b/src/MNH/ch_f77.fx90 index f7a653034a8058e5a79ac0b4a77f65f854652fe0..20e3e6cbb0292bffff3687c952ea1f26902532cf 100644 --- a/src/MNH/ch_f77.fx90 +++ b/src/MNH/ch_f77.fx90 @@ -5141,8 +5141,8 @@ c C copy labels into output array - if (njout .ne. 41) then - WRITE(kout,*) 'There should be 41 J-Values to be updated!' + if (njout .ne. 42) then + WRITE(kout,*) 'There should be 42 J-Values to be updated!' WRITE(kout,*) 'We better stop here ... in tuvmain.f' C callabortstop CALL ABORT @@ -19678,7 +19678,7 @@ CCC FILE rxn.f * the product (cross section) x (quantum yield) for photo-reactions: * r01 through r47 * r101 through r148 -* r149, r150 and r151 added from original TUV code +* r149, r150, r151 and r152 added from original TUV code *=============================================================================* SUBROUTINE r01(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) @@ -23675,7 +23675,7 @@ c INCLUDE 'params' jlabel(j) = 'CHOCHO -> HCO + HCO' j = j + 1 - jlabel(j) = 'CHOCHO -> CH2O + CO' + jlabel(j) = 'CHOCHO -> H2 + 2CO' j = j + 1 jlabel(j) = 'CHOCHO -> CH2O + CO' @@ -39846,7 +39846,180 @@ c INCLUDE 'params' *=============================================================================* - SUBROUTINE r150(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) + SUBROUTINE r149(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) + +*-----------------------------------------------------------------------------* +*= PURPOSE: =* +*= Provide the product (cross section) x (quantum yield) for benzaldehyde =* +*= photolysis: =* +*= C6H5CHO + hv -> CHO + HO2 + CO =* +*= =* +*= Cross section from SAPRC-07 (Calvert et al., 2002) =* +*= =* +*= Products from Zhu and Cronin (Chem. Phys. Let., 317, 2000) =* +*= =* +*= Quantum yield asumed 0.06 (RACM2, Goliff et al., 2013) =* +*-----------------------------------------------------------------------------* +*= PARAMETERS: =* +*= NW - INTEGER, number of specified intervals + 1 in working (I)=* +*= wavelength grid =* +*= WL - REAL, vector of lower limits of wavelength intervals in (I)=* +*= working wavelength grid =* +*= WC - REAL, vector of center points of wavelength intervals in (I)=* +*= working wavelength grid =* +*= NZ - INTEGER, number of altitude levels in working altitude grid (I)=* +*= TLEV - REAL, temperature (K) at each specified altitude level (I)=* +*= AIRDEN - REAL, air density (molec/cc) at each altitude level (I)=* +*= J - INTEGER, counter for number of weighting functions defined (IO)=* +*= SQ - REAL, cross section x quantum yield (cm^2) for each (O)=* +*= photolysis reaction defined, at each defined wavelength and =* +*= at each defined altitude level =* +*= JLABEL - CHARACTER*50, string identifier for each photolysis reaction (O)=* +*= defined =* +*-----------------------------------------------------------------------------* +*= Routine added by M. Leriche for BALD in RACM2 mecanism - March 2018 =* +*-----------------------------------------------------------------------------* + + IMPLICIT NONE +c INCLUDE 'params' + +* BROADLY USED PARAMETERS: +*_________________________________________________ +* i/o file unit numbers + INTEGER kout, kin +* output +* PARAMETER(kout=6) +* input + PARAMETER(kin=78) +*_________________________________________________ +* altitude, wavelength, time (or solar zenith angle) grids + INTEGER kz, kw +* altitude + PARAMETER(kz=151) +* wavelength + PARAMETER(kw=157) +*_________________________________________________ +* number of weighting functions + INTEGER kj +* wavelength and altitude dependent + PARAMETER(kj=90) + +* delta for adding points at beginning or end of data grids + REAL deltax + PARAMETER (deltax = 1.E-5) + +* some constants... + +* pi: + REAL pi + PARAMETER(pi=3.1415926535898) + +* radius of the earth, km: + REAL radius + PARAMETER(radius=6.371E+3) + +* Planck constant x speed of light, J m + + REAL hc + PARAMETER(hc = 6.626068E-34 * 2.99792458E8) + +* largest number of the machine: + REAL largest + PARAMETER(largest=1.E+36) + +* small numbers (positive and negative) + REAL pzero, nzero + PARAMETER(pzero = +10./largest) + PARAMETER(nzero = -10./largest) + +* machine precision + + REAL precis + PARAMETER(precis = 1.e-7) + +* input + + INTEGER nw + REAL wl(kw), wc(kw) + + INTEGER nz + + REAL tlev(kz) + REAL airden(kz) + +* weighting functions + + CHARACTER*50 jlabel(kj) + INTEGER TPFLAG(kj) + REAL sq(kj,kz,kw) + +* input/output: + + INTEGER j + +* data arrays + + INTEGER kdata + PARAMETER(kdata=20000) + + INTEGER i, n + REAL x(kdata), y(kdata) + +* local + + REAL yg(kw) + REAL qy, sig + INTEGER ierr + INTEGER iw + +************************* C6H5CHO photolysis + + j = j+1 + jlabel(j) = 'C6H5CHO -> HCO + HO2 + CO' + + + OPEN(UNIT=kin,FILE='DATAJ1/ABS/BENZALD.abs', + $ STATUS='old') + DO i = 1, 5 + READ(kin,*) + ENDDO + n = 100 + DO i = 1, n + READ(kin,*) x(i), y(i) + ENDDO + CLOSE(kin) + + CALL addpnt(x,y,kdata,n,x(1)*(1.-deltax),0.) + CALL addpnt(x,y,kdata,n, 0.,0.) + CALL addpnt(x,y,kdata,n,x(n)*(1.+deltax),0.) + CALL addpnt(x,y,kdata,n, 1.e+38,0.) + CALL inter2(nw,wl,yg,n,x,y,ierr) + IF (ierr .NE. 0) THEN + WRITE(*,*) ierr, jlabel(j) + STOP + ENDIF + +* quantum yields assumed to be 0.06 + + qy = 0.06 + + DO iw = 1, nw-1 + DO i = 1, nz + + sig = yg(iw) + sq(j,i,iw) = qy * sig + + ENDDO + ENDDO + + tpflag(j) = 0 + + RETURN + END + +*=============================================================================* + + SUBROUTINE r151(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) *-----------------------------------------------------------------------------* *= PURPOSE: =* @@ -40025,7 +40198,7 @@ c INCLUDE 'params' *=============================================================================* - SUBROUTINE r151(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) + SUBROUTINE r152(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) *-----------------------------------------------------------------------------* *= PURPOSE: =* @@ -42392,6 +42565,11 @@ C call r124(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) * Uses availble Martinez data for cross section CALL r149(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) +* BENZALD + hv -> phenoxy + HO2 + CO +* M. Leriche added March 2018 for BALD (RACM2) +* Uses data from SAPRC-07 for cross section + CALL r150(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) + ******** FOx Photochemistry *E12. CF2O + hv -> Products @@ -42553,10 +42731,10 @@ C CALL r145(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) *** Add from LaMP code (Deguillaume et al., 2004) *AQ01. H2O2(aq) -> 2OH - CALL r151(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) + CALL r152(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) *AQ02. NO3-(aq) -> NO2 + OH - CALL r150(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) + CALL r151(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) **************************************************************** diff --git a/src/MNH/modd_ch_init_jvalues.f90 b/src/MNH/modd_ch_init_jvalues.f90 index 54cd339670e8d29fc2f74f9796456e6383d21b13..86a1731b0433146fb82df0daa122f1359c829b79 100644 --- a/src/MNH/modd_ch_init_jvalues.f90 +++ b/src/MNH/modd_ch_init_jvalues.f90 @@ -33,7 +33,7 @@ INTEGER :: NSZA_INCR = 99 + 1 REAL, ALLOCATABLE, DIMENSION(:) :: XSZA_JVAL INTEGER, PARAMETER :: NZZ_JVAL = 30 + 1 REAL, ALLOCATABLE, DIMENSION(:) :: XZZ_JVAL -INTEGER, PARAMETER :: JPJVMAX = 41 +INTEGER, PARAMETER :: JPJVMAX = 42 INTEGER :: NBALB = 10 ! END MODULE MODD_CH_INIT_JVALUES