Skip to content

Commit

Permalink
This commit (re)adds the ability to turn off 5 heterogeneous reaction…
Browse files Browse the repository at this point in the history
…s via the Input_Opt%TurnOffHetRates toggle. This is the preferred solution for GEOS runs. The 5 heterogenous reactions are:

ClNO3 + HBr --> BrCl + HNO3
ClNO3 + BrSALA --> BrCl + HNO3
ClNO3 + BrSALC --> BrCl + HNO3
BrNO3 + HCl --> BrCl + HNO3
HOCl + HBr --> BrCl + H2O

This toggle was added to a previous version of GEOS-Chem (v12) but its functionality did not get transferred to the updated heterogeneous chemistry reaction rate code.

This is a zero-diff change unless one enables the Input_Opt%TurnOffHetRates toggle.
  • Loading branch information
Christoph Keller committed Sep 29, 2023
1 parent 1706b3e commit dbc588d
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
5 changes: 5 additions & 0 deletions KPP/fullchem/commonIncludeVars.H
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,11 @@
LOGICAL :: cloudBox ! Are we in a box with cloud?
REAL(dp) :: fracOrgAer ! Fraction of organic aerosol [1]
REAL(dp) :: fracInorgAer ! Fraction of organic aerosol [1]
!
! Additional fields for GEOS runs
!
LOGICAL :: TurnOffHetRates ! Turn off heterogeneous reactions in stratosphere?

END TYPE HetState
TYPE(HetState), TARGET, PUBLIC :: State_Het
!$OMP THREADPRIVATE( State_Het )
Expand Down
3 changes: 3 additions & 0 deletions KPP/fullchem/fullchem_HetStateFuncs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,9 @@ SUBROUTINE FullChem_SetStateHet( I, J, L, &
! ... check if there is surface NAT at this grid box
H%natSurface = ( H%pscBox .and. ( C(ind_NIT) > 0.0_dp ) )

! Flag to turn off heterogeneous reactions in stratosphere
H%TurnOffHetRates = Input_Opt%TurnOffHetRates

END SUBROUTINE FullChem_SetStateHet
!EOC
!------------------------------------------------------------------------------
Expand Down
21 changes: 21 additions & 0 deletions KPP/fullchem/fullchem_RateLawFuncs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,10 @@ FUNCTION BrNO3uptkByHCl( H ) RESULT( k )

! Assume BrNO3 is limiting, so update the removal rate accordingly
k = kIIR1Ltd( C(ind_BrNO3), C(ind_HCl), k )

! Force to zero if HetRate flag is turned on
IF ( H%TurnOffHetRates ) k = 0.0_dp

END FUNCTION BrNO3uptkByHCl

!=========================================================================
Expand Down Expand Up @@ -1328,6 +1332,10 @@ FUNCTION ClNO3uptkByHBr( H ) RESULT( k )
!
! Assume ClNO3 is limiting, so recompute reaction rate accordingly
k = kIIR1Ltd( C(ind_ClNO3), C(ind_HBr), k )

! Force to zero if HetRate flag is turned on
IF ( H%TurnOffHetRates ) k = 0.0_dp

END FUNCTION ClNO3uptkByHBr

FUNCTION ClNO3uptkByBrSALA( H ) RESULT( k )
Expand Down Expand Up @@ -1360,6 +1368,10 @@ FUNCTION ClNO3uptkByBrSALA( H ) RESULT( k )
!
! Assume ClNO3 is limiting, so recompute reaction rate accordingly
k = kIIR1Ltd( C(ind_ClNO3), C(ind_BrSALA), k )

! Force to zero if HetRate flag is turned on
IF ( H%TurnOffHetRates ) k = 0.0_dp

END FUNCTION ClNO3uptkByBrSALA

FUNCTION ClNO3uptkByBrSALC( H ) RESULT( k )
Expand Down Expand Up @@ -1392,6 +1404,10 @@ FUNCTION ClNO3uptkByBrSALC( H ) RESULT( k )
!
! Assume ClNO3 is limiting, so recompute reaction rate accordingly
k = kIIR1Ltd( C(ind_ClNO3), C(ind_BrSALC), k )

! Force to zero if HetRate flag is turned on
IF ( H%TurnOffHetRates ) k = 0.0_dp

END FUNCTION ClNO3uptkByBrSALC

FUNCTION ClNO3uptkBySALACL( H ) RESULT( k )
Expand All @@ -1414,6 +1430,7 @@ FUNCTION ClNO3uptkBySALACL( H ) RESULT( k )
!
! Assume ClNO3 is limiting, so recompute reaction rate accordingly
k = kIIR1Ltd( C(ind_ClNO3), C(ind_SALACL), k )

END FUNCTION ClNO3uptkBySALACL

FUNCTION ClNO3uptkBySALCCL( H ) RESULT( k )
Expand Down Expand Up @@ -2241,6 +2258,10 @@ FUNCTION HOClUptkByHBr( H ) RESULT( k )
!
! Assume HOCl is limiting, so recompute reaction rate accordingly
k = kIIR1Ltd( C(ind_HOCl), C(ind_HBr), k )

! Force to zero if HetRate flag is turned on
IF ( H%TurnOffHetRates ) k = 0.0_dp

END FUNCTION HOClUptkByHBr

FUNCTION HOClUptkBySALACL( H ) RESULT( k )
Expand Down

0 comments on commit dbc588d

Please sign in to comment.