Skip to content
Snippets Groups Projects
Commit e5373443 authored by Gaelle DELAUTIER's avatar Gaelle DELAUTIER
Browse files

Maud 19/6/2048 : modif pour TUV avec RACM2

parent 16d334d3
No related branches found
No related tags found
No related merge requests found
...@@ -29185,7 +29185,7 @@ REAL,DIMENSION(:,:,:,:), INTENT(IN) :: PJVALUES ! Tuv coefficient ...@@ -29185,7 +29185,7 @@ REAL,DIMENSION(:,:,:,:), INTENT(IN) :: PJVALUES ! Tuv coefficient
! /BEGIN_SET_PHOTO_RATES/ ! /BEGIN_SET_PHOTO_RATES/
! parameter for use by subroutine JVALUES, ! parameter for use by subroutine JVALUES,
! contains the actual photolysis rates ! 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) REAL, DIMENSION(KVECNPT,19) :: ZRATES ! photolysis rates of RACM (vector)
INTEGER :: JITPK ! loop counter for J-Value transfer INTEGER :: JITPK ! loop counter for J-Value transfer
INTEGER :: IDTI,IDTJ INTEGER :: IDTI,IDTJ
...@@ -29247,8 +29247,8 @@ DO JITPK = 0, KVECNPT-1 ...@@ -29247,8 +29247,8 @@ DO JITPK = 0, KVECNPT-1
ZRATES(JITPK+1, 17) = 0.20*ZRATESIO(JITPK+1,20)& ZRATES(JITPK+1, 17) = 0.20*ZRATESIO(JITPK+1,20)&
&+ 0.80*ZRATESIO(JITPK+1,21) &+ 0.80*ZRATESIO(JITPK+1,21)
! aqueous phase photolysis ! aqueous phase photolysis
ZRATES(JITPK+1, 18) = ZRATESIO(JITPK+1,40) ZRATES(JITPK+1, 18) = ZRATESIO(JITPK+1,41)
ZRATES(JITPK+1, 19) = ZRATESIO(JITPK+1,41) ZRATES(JITPK+1, 19) = ZRATESIO(JITPK+1,42)
! !
END DO END DO
! !
......
...@@ -5141,8 +5141,8 @@ c ...@@ -5141,8 +5141,8 @@ c
   
C copy labels into output array C copy labels into output array
   
if (njout .ne. 41) then if (njout .ne. 42) then
WRITE(kout,*) 'There should be 41 J-Values to be updated!' WRITE(kout,*) 'There should be 42 J-Values to be updated!'
WRITE(kout,*) 'We better stop here ... in tuvmain.f' WRITE(kout,*) 'We better stop here ... in tuvmain.f'
C callabortstop C callabortstop
CALL ABORT CALL ABORT
...@@ -19678,7 +19678,7 @@ CCC FILE rxn.f ...@@ -19678,7 +19678,7 @@ CCC FILE rxn.f
* the product (cross section) x (quantum yield) for photo-reactions: * the product (cross section) x (quantum yield) for photo-reactions:
* r01 through r47 * r01 through r47
* r101 through r148 * 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) SUBROUTINE r01(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout)
   
...@@ -23675,7 +23675,7 @@ c INCLUDE 'params' ...@@ -23675,7 +23675,7 @@ c INCLUDE 'params'
jlabel(j) = 'CHOCHO -> HCO + HCO' jlabel(j) = 'CHOCHO -> HCO + HCO'
   
j = j + 1 j = j + 1
jlabel(j) = 'CHOCHO -> CH2O + CO' jlabel(j) = 'CHOCHO -> H2 + 2CO'
   
j = j + 1 j = j + 1
jlabel(j) = 'CHOCHO -> CH2O + CO' jlabel(j) = 'CHOCHO -> CH2O + CO'
...@@ -39846,7 +39846,180 @@ c INCLUDE 'params' ...@@ -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: =* *= PURPOSE: =*
...@@ -40025,7 +40198,7 @@ c INCLUDE 'params' ...@@ -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: =* *= PURPOSE: =*
...@@ -42392,6 +42565,11 @@ C call r124(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) ...@@ -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 * Uses availble Martinez data for cross section
CALL r149(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) 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 ******** FOx Photochemistry
   
*E12. CF2O + hv -> Products *E12. CF2O + hv -> Products
...@@ -42553,10 +42731,10 @@ C CALL r145(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout) ...@@ -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) *** Add from LaMP code (Deguillaume et al., 2004)
   
*AQ01. H2O2(aq) -> 2OH *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 *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)
   
**************************************************************** ****************************************************************
   
...@@ -33,7 +33,7 @@ INTEGER :: NSZA_INCR = 99 + 1 ...@@ -33,7 +33,7 @@ INTEGER :: NSZA_INCR = 99 + 1
REAL, ALLOCATABLE, DIMENSION(:) :: XSZA_JVAL REAL, ALLOCATABLE, DIMENSION(:) :: XSZA_JVAL
INTEGER, PARAMETER :: NZZ_JVAL = 30 + 1 INTEGER, PARAMETER :: NZZ_JVAL = 30 + 1
REAL, ALLOCATABLE, DIMENSION(:) :: XZZ_JVAL REAL, ALLOCATABLE, DIMENSION(:) :: XZZ_JVAL
INTEGER, PARAMETER :: JPJVMAX = 41 INTEGER, PARAMETER :: JPJVMAX = 42
INTEGER :: NBALB = 10 INTEGER :: NBALB = 10
! !
END MODULE MODD_CH_INIT_JVALUES END MODULE MODD_CH_INIT_JVALUES
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment