Skip to content

Commit

Permalink
Restore pp_trop_mam_oslo from cam_cesm2_1_rel_05-Nor_v1.0.5
Browse files Browse the repository at this point in the history
Copy pp_trop_mam_oslo mechanism and pp source from cam_cesm2_1_rel_05-Nor_v1.0.5
Specify trop_mam_oslo for NF compsets
Some cleanup in configure

Fortran is identical to that created with the new chemistry preprocessor
  • Loading branch information
Steve Goldhaber committed Sep 1, 2023
1 parent 7c5f5b6 commit 1006c1e
Show file tree
Hide file tree
Showing 21 changed files with 1,630 additions and 8 deletions.
2 changes: 1 addition & 1 deletion bld/config_files/definition.xml
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ User specified C compiler options to append to Makefile defaults.
<entry id="fc" value="">
User specified Fortran compiler overrides Makefile default.
</entry>
<entry id="fc_type" valid_values="cray,pgi,intel,gnu,pathscale,ibm,nag,nvhpc,pgi-gpu,nvhpc-gpu" value="">
<entry id="fc_type" valid_values="intel,gnu" value="">
Type of Fortran compiler. Used when -fc specifies a generic wrapper script
such as mpif90 or ftn.
</entry>
Expand Down
10 changes: 5 additions & 5 deletions bld/configure
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,13 @@ OPTIONS
-cosp_libdir <dir> Directory containing COSP library.
-esmf_libdir <dir> Directory containing ESMF library and esmf.mk file.
-fc <name> User specified Fortran compiler. Overrides Makefile default.
-fc_type <name> Type of Fortran compiler [pgi | intel | gnu | pathscale
| ibm | nag]. This argument is used in conjunction
-fc_type <name> Type of Fortran compiler [intel | gnu].
This argument is used in conjunction
with the -fc argument when the name of the fortran
compiler refers to a wrapper script (e.g., mpif90
or ftn). In this case the user needs to specify
compiler refers to a wrapper script (e.g., mpif90).
In this case the user needs to specify
the type of Fortran compiler that is being invoked
by the wrapper script. Default: pgi
by the wrapper script. Default: gnu
-fflags <string> A string of user specified Fortran compiler flags. Appended to
Makefile defaults. See -fopt to override optimization flags.
-fopt <string> A string of user specified Fortran compiler optimization flags.
Expand Down
3 changes: 1 addition & 2 deletions cime_config/config_component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,7 @@
<value compset="_CAM%DEV">-phys cam_dev</value>
<value compset="_CAM.*(%GHGMAM4)">-chem ghg_mam4</value>
<value compset="_CAM.*(%CCTS1|%CFIRE)">-chem trop_strat_mam5_vbs</value>
<value compset="%NORESM">-camnor</value>

<value compset="%NORESM">-camnor -chem trop_mam_oslo</value>
<value compset="%MAM7">-chem trop_mam7</value>
<value compset="CAM60%CVBSX">-chem trop_strat_mam5_vbsext</value>
<value compset="CAM60%CCTS2">-chem trop_strat_mam5_ts2</value>
Expand Down
162 changes: 162 additions & 0 deletions src/chemistry/pp_trop_mam_oslo/chem_mech.doc
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@


|--------------------------------------------------------------------------------------------------|
| |
| |
| This is a mam-oslo simulation with : |
| (1) comments to add |
| (2) comments to add |
| |
| |
|--------------------------------------------------------------------------------------------------|


Solution species
( 1) SO2
( 2) H2SO4
( 3) DMS (CH3SCH3)
( 4) H2O2
( 5) SO4_NA (H2SO4)
( 6) SO4_A1 (H2SO4)
( 7) SO4_A2 (NH4HSO4)
( 8) SO4_AC (H2SO4)
( 9) SO4_PR (H2SO4)
( 10) BC_N (C)
( 11) BC_AX (C)
( 12) BC_NI (C)
( 13) BC_A (C)
( 14) BC_AI (C)
( 15) BC_AC (C)
( 16) OM_NI (C)
( 17) OM_AI (C)
( 18) OM_AC (C)
( 19) DST_A2 (AlSiO5)
( 20) DST_A3 (AlSiO5)
( 21) SS_A1 (NaCl)
( 22) SS_A2 (NaCl)
( 23) SS_A3 (NaCl)
( 24) SOA_NA (C10H16O2)
( 25) SOA_A1 (C10H16O2)
( 26) SOA_LV (C10H16O2)
( 27) SOA_SV (C10H16O2)
( 28) monoterp (C10H16)
( 29) isoprene (C5H8)
( 30) H2O


Invariant species
( 1) M
( 2) N2
( 3) O2
( 4) O3
( 5) OH
( 6) NO3
( 7) HO2


Column integrals
( 1) O3 - 0.000E+00
( 2) O2 - 0.000E+00

Class List
==========

Implicit
--------
( 1) DMS
( 2) SO2
( 3) H2O2
( 4) SO4_NA
( 5) SO4_A1
( 6) SO4_A2
( 7) SO4_AC
( 8) SO4_PR
( 9) BC_N
( 10) BC_AX
( 11) BC_NI
( 12) BC_A
( 13) BC_AI
( 14) BC_AC
( 15) OM_NI
( 16) OM_AI
( 17) OM_AC
( 18) DST_A2
( 19) DST_A3
( 20) SS_A1
( 21) SS_A2
( 22) SS_A3
( 23) H2SO4
( 24) SOA_NA
( 25) SOA_A1
( 26) SOA_LV
( 27) SOA_SV
( 28) monoterp
( 29) isoprene
( 30) H2O

Photolysis
jh2o2 ( 1) H2O2 + hv -> (No products) rate = ** User defined ** ( 1)

Reactions
usr_HO2_HO2 ( 1) HO2 + HO2 -> H2O2 rate = ** User defined ** ( 2)
( 2) H2O2 + OH -> H2O + HO2 rate = 2.90E-12*exp( -160./t) ( 3)
( 3) DMS + OH -> SO2 rate = 9.60E-12*exp( -234./t) ( 4)
( 4) DMS + NO3 -> SO2 + {HNO3} rate = 1.90E-13*exp( 520./t) ( 5)
( 5) SO2 + OH + M -> H2SO4 + M troe : ko=3.00E-31*(300/t)**3.30 ( 6)
ki=1.50E-12
f=0.60
usr_DMS_OH ( 6) DMS + OH -> .75*SO2 + .5*HO2 + 0.029*SOA_LV + 0.114*SOA_SV rate = ** User defined ** ( 7)
( 7) monoterp + O3 -> .15*SOA_LV rate = 8.05E-16*exp( -640./t) ( 8)
( 8) monoterp + OH -> .15*SOA_SV rate = 1.20E-11*exp( 440./t) ( 9)
( 9) monoterp + NO3 -> .15*SOA_SV rate = 1.20E-12*exp( 490./t) ( 10)
( 10) isoprene + O3 -> .05*SOA_SV rate = 1.03E-14*exp( -1995./t) ( 11)
( 11) isoprene + OH -> .05*SOA_SV rate = 2.70E-11*exp( 390./t) ( 12)
( 12) isoprene + NO3 -> .05*SOA_SV rate = 3.15E-12*exp( -450./t) ( 13)

Heterogeneous loss species

Extraneous prod/loss species
( 1) SO2 (dataset)
( 2) BC_NI (dataset)
( 3) BC_AX (dataset)
( 4) BC_N (dataset)
( 5) OM_NI (dataset)
( 6) SO4_PR (dataset)
( 7) H2O (dataset)


Equation Report

d(SO2)/dt = r3*OH*DMS + r4*NO3*DMS + .75*r6*OH*DMS
- r5*OH*M*SO2
d(H2SO4)/dt = r5*OH*M*SO2
d(DMS)/dt = - r3*OH*DMS - r4*NO3*DMS - r6*OH*DMS
d(H2O2)/dt = r1
- j1*H2O2 - r2*OH*H2O2
d(SO4_NA)/dt = 0
d(SO4_A1)/dt = 0
d(SO4_A2)/dt = 0
d(SO4_AC)/dt = 0
d(SO4_PR)/dt = 0
d(BC_N)/dt = 0
d(BC_AX)/dt = 0
d(BC_NI)/dt = 0
d(BC_A)/dt = 0
d(BC_AI)/dt = 0
d(BC_AC)/dt = 0
d(OM_NI)/dt = 0
d(OM_AI)/dt = 0
d(OM_AC)/dt = 0
d(DST_A2)/dt = 0
d(DST_A3)/dt = 0
d(SS_A1)/dt = 0
d(SS_A2)/dt = 0
d(SS_A3)/dt = 0
d(SOA_NA)/dt = 0
d(SOA_A1)/dt = 0
d(SOA_LV)/dt = .029*r6*OH*DMS + .15*r7*O3*monoterp
d(SOA_SV)/dt = .114*r6*OH*DMS + .15*r8*OH*monoterp + .15*r9*NO3*monoterp + .05*r10*O3*isoprene
+ .05*r11*OH*isoprene + .05*r12*NO3*isoprene
d(monoterp)/dt = - r7*O3*monoterp - r8*OH*monoterp - r9*NO3*monoterp
d(isoprene)/dt = - r10*O3*isoprene - r11*OH*isoprene - r12*NO3*isoprene
d(H2O)/dt = r2*OH*H2O2
109 changes: 109 additions & 0 deletions src/chemistry/pp_trop_mam_oslo/chem_mech.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
BEGSIM
SPECIES

Solution
SO2, H2SO4
DMS -> CH3SCH3, H2O2
SO4_NA->H2SO4, SO4_A1->H2SO4, SO4_A2->NH4HSO4
SO4_AC->H2SO4, SO4_PR->H2SO4, BC_N->C
BC_AX->C, BC_NI->C, BC_A->C, BC_AI->C
BC_AC->C, OM_NI->C, OM_AI->C, OM_AC->C
DST_A2->AlSiO5, DST_A3->AlSiO5
SS_A1->NaCl, SS_A2->NaCl, SS_A3->NaCl
* Approximate soa species with those of monoterpene oxidation products
* based on Paasonen et al. (2010); Taipale et al. (2008).
SOA_NA->C10H16O2, SOA_A1->C10H16O2
SOA_LV ->C10H16O2, SOA_SV->C10H16O2
monoterp -> C10H16, isoprene -> C5H8
H2O
End Solution

Fixed
M, N2, O2, O3, OH, NO3, HO2
End Fixed

Col-int
O3 = 0.
O2 = 0.
End Col-int

End SPECIES

Solution Classes
Explicit
End Explicit
Implicit
DMS, SO2, H2O2
SO4_NA, SO4_A1, SO4_A2
SO4_AC, SO4_PR, BC_N
BC_AX, BC_NI, BC_A, BC_AI
BC_AC, OM_NI, OM_AI, OM_AC
DST_A2, DST_A3
SS_A1, SS_A2, SS_A3 , H2SO4
SOA_NA, SOA_A1
SOA_LV,SOA_SV, monoterp, isoprene
H2O
End Implicit
End Solution Classes

CHEMISTRY
Photolysis
[jh2o2] H2O2 + hv ->
End Photolysis

Reactions
[usr_HO2_HO2] HO2 + HO2 -> H2O2
H2O2 + OH -> H2O + HO2 ; 2.9e-12, -160
DMS + OH -> SO2 ; 9.6e-12, -234.
DMS + NO3 -> SO2 + HNO3 ; 1.9e-13, 520.
SO2 + OH + M -> H2SO4 + M ; 3.0e-31, 3.3, 1.5e-12, 0.0, 0.6
* SOA has MW=168, and MSA=96, so to get correct MSA mass ==> factor of 96/168 = 0.57
* Then account for 0.25 which is 0.25 MSA molec per DMS molec (the other 0.75 goes to SO2)
* Then 0.2 assumed yield for SOA_LV and 0.8 assumed yield for SOA_SV gives the coefficients below
* reaction rate from Chin et al 1996, JGR, vol 101, no D13
*
[usr_DMS_OH] DMS + OH -> .75 * SO2 + .5 * HO2 + 0.029*SOA_LV + 0.114*SOA_SV
*
*cka: added organic vapor oxidation with constants from IUPAC below
* Assume a yield of 15% for SOA LV production from these reactions
* Assume a yield of 15 % for monoterpene and 5% for isoprene SOA SV production reactions
* SOA_LV: very low volatility, can nucleate or grow small particles (oxidation products from O3+monoterp)
* SOA_SV: rest of SOA formed
monoterp + O3 -> .15*SOA_LV ; 8.05e-16, -640.
monoterp + OH -> .15*SOA_SV ; 1.2e-11, 440.
monoterp + NO3 -> .15*SOA_SV ; 1.2e-12, 490.
isoprene + O3 -> .05*SOA_SV ; 1.03e-14, -1995.
isoprene + OH -> .05*SOA_SV ; 2.7e-11, 390.
isoprene + NO3 -> .05*SOA_SV ; 3.15e-12, -450.
End Reactions

Heterogeneous
H2O2, SO2
End Heterogeneous

Ext Forcing
SO2 <- dataset
BC_NI <-dataset
BC_AX <-dataset
BC_N <-dataset
OM_NI <-dataset
SO4_PR <-dataset
H2O <- dataset
End Ext Forcing

END CHEMISTRY

SIMULATION PARAMETERS

Version Options
model = cam
machine = intel
architecture = hybrid
vec_ftns = on
multitask = on
namemod = on
modules = on
End Version Options

END SIMULATION PARAMETERS
ENDSIM
50 changes: 50 additions & 0 deletions src/chemistry/pp_trop_mam_oslo/chem_mods.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
module chem_mods
!--------------------------------------------------------------
! ... Basic chemistry parameters and arrays
!--------------------------------------------------------------
use shr_kind_mod, only : r8 => shr_kind_r8
implicit none
save
integer, parameter :: phtcnt = 1, & ! number of photolysis reactions
rxntot = 13, & ! number of total reactions
gascnt = 12, & ! number of gas phase reactions
nabscol = 2, & ! number of absorbing column densities
gas_pcnst = 30, & ! number of "gas phase" species
nfs = 7, & ! number of "fixed" species
relcnt = 0, & ! number of relationship species
grpcnt = 0, & ! number of group members
nzcnt = 38, & ! number of non-zero matrix entries
extcnt = 7, & ! number of species with external forcing
clscnt1 = 0, & ! number of species in explicit class
clscnt2 = 0, & ! number of species in hov class
clscnt3 = 0, & ! number of species in ebi class
clscnt4 = 30, & ! number of species in implicit class
clscnt5 = 0, & ! number of species in rodas class
indexm = 1, & ! index of total atm density in invariant array
indexh2o = 0, & ! index of water vapor density
clsze = 1, & ! loop length for implicit chemistry
rxt_tag_cnt = 3, &
enthalpy_cnt = 0, &
nslvd = 0
integer :: clscnt(5) = 0
integer :: cls_rxt_cnt(4,5) = 0
integer :: clsmap(gas_pcnst,5) = 0
integer :: permute(gas_pcnst,5) = 0
integer :: diag_map(clscnt4) = 0
real(r8) :: adv_mass(gas_pcnst) = 0._r8
real(r8) :: crb_mass(gas_pcnst) = 0._r8
real(r8) :: fix_mass(max(1,nfs))
real(r8), allocatable :: cph_enthalpy(:)
integer, allocatable :: cph_rid(:)
integer, allocatable :: num_rnts(:)
integer, allocatable :: rxt_tag_map(:)
real(r8), allocatable :: pht_alias_mult(:,:)
character(len=32), allocatable :: rxt_tag_lst(:)
character(len=16), allocatable :: pht_alias_lst(:,:)
character(len=16) :: inv_lst(max(1,nfs))
character(len=16) :: extfrc_lst(max(1,extcnt))
logical :: frc_from_dataset(max(1,extcnt))
logical :: is_vector
logical :: is_scalar
character(len=16) :: slvd_lst(max(1,nslvd))
end module chem_mods
16 changes: 16 additions & 0 deletions src/chemistry/pp_trop_mam_oslo/m_rxt_id.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module m_rxt_id
implicit none
integer, parameter :: rid_jh2o2 = 1
integer, parameter :: rid_usr_HO2_HO2 = 2
integer, parameter :: rid_usr_DMS_OH = 7
integer, parameter :: rid_r0003 = 3
integer, parameter :: rid_r0004 = 4
integer, parameter :: rid_r0005 = 5
integer, parameter :: rid_r0006 = 6
integer, parameter :: rid_r0008 = 8
integer, parameter :: rid_r0009 = 9
integer, parameter :: rid_r0010 = 10
integer, parameter :: rid_r0011 = 11
integer, parameter :: rid_r0012 = 12
integer, parameter :: rid_r0013 = 13
end module m_rxt_id
Loading

0 comments on commit 1006c1e

Please sign in to comment.