Skip to content

Commit

Permalink
Merge pull request #11 from GEOS-ESM/feature/mmanyin/golf_edits
Browse files Browse the repository at this point in the history
Edits from Benchmark G
  • Loading branch information
mmanyin authored Dec 6, 2023
2 parents 4c5954e + 041c7c4 commit 7e1b250
Show file tree
Hide file tree
Showing 10 changed files with 590 additions and 555 deletions.
23 changes: 17 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Fixed
### Added
### Changed
### Removed
### Deprecated


## [1.2.0] - 2023-12-07

### Fixed

- QQJK diag calc had bug, used time(t+dt) constituents ibstead of time(t) fields, fixed on 2023Jul19
- Fixed bug in Emissions and Deposition where SZA degrees was used instead of cosine(SZA)
- Fixed units for degassing volcano point emissions
- Improved handling of phot_opt cases; allows for phot_opt == 0 again
- Improved handling of sad_opt cases; allows for sad_opt == 0 again

### Added

Expand All @@ -19,12 +31,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed

- Update CI to use Baselibs default from the CircleCI orb

### Fixed

### Removed

### Deprecated
- Changed a few SAD reactions to use JPL 2019 approach
- ExtData now uses Benchmark G configuration
- Emissions including 2D, 3D and point source (volcano) now are done as in Benchmark G
- Isoprene scaling changed from 1 to 0.7
- Boundary condition file now includes HFCs, and no longer includes extra Br (when HFC mech is chosen)


## [1.1.0] - 2023-04-24
Expand Down
626 changes: 234 additions & 392 deletions GMI_GridComp/GMI_ExtData.yaml

Large diffs are not rendered by default.

77 changes: 60 additions & 17 deletions GMI_GridComp/GmiChemistry/StratTrop_HFC_S/GMI_GridComp.rc
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,22 @@ MEK_biom
CO_biom
NO_biom
NO_air
ALD2_biof
ALK4_fosf
ALK4_biof
C2H6_fosf
C2H6_biof
PRPE_fosf
PRPE_biof
C3H8_fosf
C3H8_biof
CH2O_biof
MEK_fosf
MEK_biof
CO_fosf
CO_biof
NO_fosf
NO_biof
SO2_FIRES-FLUX
SO2_NONENERGY-FLUX
SO2_ENERGY-FLUX
Expand Down Expand Up @@ -176,32 +185,51 @@ emissionSpeciesLayers::
1
1
1
1
1
1
1
1
1
1
1
1
72
::

emissionPointFilenames::
SO2:volcano:/discover/nobackup/projects/gmao/share/dao_ops/fvInput_nc3/PIESA/sfc/volcanic_v7/so2_volcanic_emissions_Carns.%y4%m2%d2.rc
SO2:volcano:ExtData/chemistry/CARN/v202106/sfc/so2_volcanic_emissions_Carns.%y4%m2%d2.rc
::
#SO2:volcano:/discover/nobackup/projects/gmao/share/dao_ops/fvInput_nc3/PIESA/sfc/volcanic_v7/so2_volcanic_effusive.v2.rc
# NOTE: Units for the volcano point source files: kg(S)/s
# Units that GMI wants : kg(SO2)/s
# GMI does the conversion in Refresh_Daily within the Emission section
# from GOCART2G SU (AMIP):
# ExtData/chemistry/CARN/v202106/sfc/so2_volcanic_emissions_Carns.%y4%m2%d2.rc
# from GOCART2G SU (OPS):
# ExtData/chemistry/CARN/v202106/sfc/so2_volcanic_emissions_CARN_v202106.degassing_only.rc
# includes eruptions:
# /discover/nobackup/projects/gmao/share/dao_ops/fvInput_nc3/PIESA/sfc/volcanic_v7/so2_volcanic_emissions_Carns.%y4%m2%d2.rc
# does not include eruptions:
# /discover/nobackup/projects/gmao/share/dao_ops/fvInput_nc3/PIESA/sfc/volcanic_v7/so2_volcanic_effusive.v2.rc

# Ship Emissions requires SHIP_NO in ExtData:
do_ShipEmission: T
doMEGANemission: T
doMEGANviaHEMCO: F

isop_scale::
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
1.0d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
0.7d0
::

soil_infile_name: ExtData/g5chem/x/GMI_SoilType.asc
Expand Down Expand Up @@ -262,7 +290,11 @@ forc_bc_kmax: 2
#forc_bc_infile_name: /discover/nobackup/ldoman/fvInput/RCP6.0_5BrWMO2014_ch4latvar_1950_2100.asc
#forc_bc_infile_name: ExtData/g5chem/x/GMI/RCP6.0_5BrWMO2014_ch4latvar_1950_2100.asc
#forc_bc_infile_name: ExtData/g5chem/x/GMI/RCP6.0_5BrWMO2018_ch4latvar_1950_2100.asc
forc_bc_infile_name: ExtData/g5chem/x/GMI/ccmiRefD1_GMIbc_1950_2018.asc
#forc_bc_infile_name: ExtData/g5chem/x/GMI/ccmiRefD1_GMIbc_1950_2018.asc
#forc_bc_infile_name: /discover/nobackup/projects/gmao/ccmdev/mmanyin/bench/bench_10-26-0_gmi_free_c360_72lev/INPUT/BC/ccmiRefD1_GMIbc_plusHFC_1950_2018.asc
forc_bc_infile_name: /discover/nobackup/projects/gmao/ccmdev/mmanyin/bench/GOLF/INPUT/BC/ccmiRefD1_GMIbc_plusHFC_no5Br_1950_2018.asc

#alternative /discover/nobackup/projects/gmi/gmidata2/users/steenrod/input/source_gas/RCP6.0_WMO2018_QingHFCs_ch4latvarGMDscl_1950_2022Hindcast.asc

forcedBcSpeciesNames::
CFC11
Expand All @@ -283,8 +315,19 @@ CH3Br
CH3Cl
CH4
N2O
HFC23
HFC32
HFC125
HFC134A
HFC143A
HFC152A
xxx
xxx
::

# The xxx entries above are for SF6 and CO2


# ----------------------------------------------------
# sad_opt
# 0: do not allocate or process SAD array
Expand Down Expand Up @@ -371,8 +414,8 @@ do_ozone_inFastJX: F

## For FastJX 6.5 & JPL10
fastj_opt: 4
# cross_section_file: ExtData/g5chem/x/photolysis/FastJX_6.5/xsec_jx65_jpl10update2_JNOx1_0.dat
cross_section_file: ExtData/g5chem/x/photolysis/FastJX_6.5/xsec_jx65wSO4_jpl10update2_JNOx1_0.dat
# cross_section_file: ExtData/g5chem/x/photolysis/FastJX_6.5/xsec_jx65_jpl10update2_JNOx1_0.dat
# rate_file not needed for FastJX6.5; new approach only differs by roundoff
# rate_file: ExtData/g5chem/x/photolysis/FastJX/ratec_124spc_jx_gmiv2.dat
# rate_file: ExtData/g5chem/x/photolysis/FastJX/ratec_119spc_jx_gmiv3.dat
Expand Down Expand Up @@ -414,7 +457,7 @@ FeedBack_QV: T
NoPSCZone: 45
PSC_Max_P_hPa: 175
# Upper limit for HNO3COND [integer, ppbv]
Condensed_HNO3_limit: 25
Condensed_HNO3_limit: 75
# Upper limit for HCl [real, ppbv]
HCl_limit: 5.0

Expand Down
99 changes: 65 additions & 34 deletions GMI_GridComp/GmiChemistry/StratTrop_HFC_S/setkin_kcalc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2157,40 +2157,56 @@ END FUNCTION skro2noabs_2
!
!_1_
!
!.... JPL 97-4
!.... JPL 19-5
!
FUNCTION sksts_n2o5 (tk,pr,sad,ptrop)
real*8, OPTIONAL :: ptrop
real*8 tk(:) ,pr(:) ,sad(:)
real*8, DIMENSION (size(tk)) :: sksts_n2o5
real*8 gamma ,pi
real*8 avgvel(size(tk))
FUNCTION sksts_n2o5 (tk,pr,sad,ptrop)
!
pi = acos(-1.0d0)
real*8, OPTIONAL :: ptrop
real*8 tk(:) ,pr(:) ,sad(:)
real*8, DIMENSION (size(tk)) :: sksts_n2o5
real*8 pi
real*8 avgvel(size(tk))
!.sds.. real*8 gamma
!... update
real*8 gamma(size(tk)), wt, k0, k1, k2
!
pi = acos(-1.0d0)
!
!=======================================================================
! N2O5 + stratospheric sulfate aerosol = 2 HNO3
!=======================================================================
!
!.sds..!.... First order reaction rate constant
!.sds..!.... PSC 3/30/99
!.sds.. gamma = 0.10d0
!
!... update gamma calc (older than JPL15)
!
!... weight % of H2SO4
!.STS.. wt = 60.0d0
wt = 75.0d0
!
!... JPL19
k0 = -25.5265 - 0.133188*wt + 0.00930846*wt*wt - 9.0194e-5*wt*wt*wt
k1 = 9283.76 + 115.345*wt - 5.19258*wt*wt + 0.0483464*wt*wt*wt
k2 = -851801. - 22191.2*wt + 766.916*wt*wt - 6.85427*wt*wt*wt
gamma(:) = exp (k0 + k1/tk(:) + k2/(tk(:)*tk(:)))
!.end update
!
avgvel(:) = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * 1000.0d0 / &
(pi * mw(IN2O5)))**0.5d0
!
where ( sad > 0.0d0 )
sksts_n2o5 = 0.25d0 * gamma * avgvel * sad
elsewhere
sksts_n2o5 = 0.0d0
endwhere
!
if ( present(ptrop) ) then
where ( pr > ptrop ) sksts_n2o5 = 0.0d0
endif
!
!.... First order reaction rate constant
!.... PSC 3/30/99
!
gamma = 0.10d0
!
avgvel(:) = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * 1000.0d0 / &
& (pi * mw(IN2O5)))**0.5d0
!
where( sad > 0.0d0 )
sksts_n2o5 = 0.25d0 * gamma * avgvel * sad
elsewhere
sksts_n2o5 = 0.0d0
end where
!
if ( present(ptrop) ) then
where( pr > ptrop ) sksts_n2o5 = 0.0d0
end if
!
END FUNCTION sksts_n2o5
END FUNCTION sksts_n2o5
!
!.... sksts_clono2 (temperature ,adcol ,pressure ,sad_lbs ,specarr( HCl,:) ,water ,ptrop)
!
Expand Down Expand Up @@ -2301,14 +2317,15 @@ END FUNCTION sksts_clono2
!
!_3_
!
!.... JPL 97-4
!.... JPL 15-10
!
FUNCTION sksts_brono2 (tk,pr,sad,ptrop)
real*8, OPTIONAL :: ptrop
real*8 tk(:) ,pr(:) ,sad(:)
real*8, DIMENSION (size(tk)) :: sksts_brono2
real*8 gamma ,pi
real*8 avgvel(size(tk))
real*8 wt
!
pi = acos(-1.0d0)
!
Expand All @@ -2320,10 +2337,24 @@ FUNCTION sksts_brono2 (tk,pr,sad,ptrop)
!
!.... David Hanson, personal communication, May 13, 1997
!
avgvel = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * 1000.0d0 / &
& (pi * mw(IBRONO2)))**0.5d0
!.orig gamma = 0.8d0
!
!... JPL15-6 formulation
! Hanson has fit an empirical expression for measured gammas for BrONO2 + H2O in the form
! of:
! 1/gamma = 1/alpha + 1/gamma(rxn)
! where
! gamma(rxn) = exp(a+b*wt)
! alpha = 0.80,
! a = 29.2,
! b = -0.40.
!... assumed %wt for GMI
wt = 75.0d0
!
gamma = 0.8d0
gamma = 1.0d0 / ( 1.0d0/0.80d0 + 1.0d0/(exp(29.2d0-0.40d0*wt)) )
!
avgvel = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * 1000.0d0 / &
(pi * mw(IBRONO2)))**0.5d0
!
sksts_brono2 = 0.25d0 * gamma * avgvel * sad
!
Expand Down Expand Up @@ -3003,7 +3034,7 @@ FUNCTION skice_brono2 (tk,pr,sad,ptrop)
!.... JPL 00-003
!.... PSC 1/16/2002
!
gprob = 0.30d0
gprob = 0.26d0 ! sds JPL19
avgvel(:) = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * 1000.0d0 / &
& (pi * mw(IBRONO2)))**0.5d0
!
Expand Down Expand Up @@ -3123,7 +3154,7 @@ FUNCTION skice_hcl_brono2 (tk,pr,sad,hcl,ptrop)
!.... PSC 1/16/2002
!
minconc = 1.0d0
gprob = 0.30d0
gprob = 0.26d0 ! sds JPL19
avgvel(:) = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * &
& 1000.0d0 / &
& (pi * mw(IBRONO2)))**0.5d0
Expand Down Expand Up @@ -3166,7 +3197,7 @@ FUNCTION skice_hcl_hobr (tk,pr,sad,hcl,ptrop)
!.... PSC 1/16/2002
!
minconc = 1.0d0
gprob = 0.20d0
gprob = 0.30d0 ! sds JPL19
avgvel(:) = 100.0d0 * (8.0d0 * 8.31448d0 * tk(:) * 1000.0d0 / &
& (pi * mw(IHOBR)))**0.5d0
!
Expand Down
Loading

0 comments on commit 7e1b250

Please sign in to comment.