Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PULL REQUEST] Clean up heterogenous chemistry rate-law functions -- excluding sulfur chemistry updates to KPP #897

Merged
merged 159 commits into from
Sep 17, 2021

Commits on Mar 16, 2021

  1. Configuration menu
    Copy the full SHA
    d02ff52 View commit details
    Browse the repository at this point in the history
  2. Merge branch 'dev/13.0.0-final' into feature/bmy/kpp

    Resolved conflicts in:
    - GeosCore/isorropiaII_mod.F90
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 16, 2021
    Configuration menu
    Copy the full SHA
    1f21e32 View commit details
    Browse the repository at this point in the history
  3. Updated CMakeLists for the aerochem KPP mechanis

    Configuring with cmake ... -DCUSTOMMECH=y now points to the
    chemical mechanism files in KPP/aerochem (instead of KPP/custom).
    This is for development of the KPP mechanism, and will be restored
    to the original functionality later.
    
    Also rebuilt the KPP/aerochem source code with KPP 2.3.1_gc.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 16, 2021
    Configuration menu
    Copy the full SHA
    710de46 View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2021

  1. Add square root of molecular weight field to the HetInfo object

    In the heterogeneous chemistry, the square root of molecular weight
    is repeatedly computed on every (I,J,L).  However, this can be
    done outside of the loop over grid boxes.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 18, 2021
    Configuration menu
    Copy the full SHA
    67a3f5a View commit details
    Browse the repository at this point in the history
  2. Stash initial updates to gckpp_HetRates.F90

    This is the start of the process to clean up gckpp_HetRates.F90.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 18, 2021
    Configuration menu
    Copy the full SHA
    e64e51e View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2021

  1. Introduce HetVOC to compute het chem rates for VOCs + cosmetic changes

    (1) Now use KIND parameter dp instead of fp. dp is in gckpp_Precision.F90.
    
    (2) The heterogeneous chemistry rates for LVOC, IHN{1-4}, INP{B,D},
        MCRHN, NCRHNB, MVKN, R4N2, IDN, ITHN, ITCN, MONITS, MONITU, and
        HONIT can now be computed by a single function, HetVOC.
    
    (3) The hetchem rates for IONITA and MONITA are constant, and can
        just be set equal to a numeric constant w/o a function call.
    
    (4) Cosmetic + whitespace changes
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 19, 2021
    Configuration menu
    Copy the full SHA
    889511b View commit details
    Browse the repository at this point in the history

Commits on Mar 22, 2021

  1. Configuration menu
    Copy the full SHA
    e1a0c4d View commit details
    Browse the repository at this point in the history
  2. Introduce HetIxCycle{BrSALA,BrSALC,SALACL,SALCCL} functions

    In KPP/fullchem/gckpp_HetRates.F90, we have split function HetIxCycleSSA
    into 4 functions HetIxCycleBrSALAinstead of using a single function
    HetIxCycleSSA, we have split that function into 4 individual functions:
    
    1. HetIxCycleBrSALA (formerly HetIxCycleSSA with N=1)
    2. HetIxCycleBrSALC (formerly HetIxCycleSSA with N=2)
    3. HetIxCycleSALACL (formerly HetIxCycleSSA with N=3)
    4. HetIxCycleSALCCL (formerly HetIxCycleSSA with N=4)
    
    This allows us to remove branching and looping within the functions,
    which should allow for more efficient execution.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 22, 2021
    Configuration menu
    Copy the full SHA
    72f5799 View commit details
    Browse the repository at this point in the history
  3. Clean up the funcitions for iodine uptake on sulfate & sea-salt

    We are able to remove the rate-law functions for computing uptake
    of iodine species on SO4, SALA, SALC, BrSALA, BrSALC, SALACL, SALCCL
    into 3 functions:
    
    (1) HetIUptakebySulf : Uptake by tropospheric sulfate
    (2) HetIUptakebySALA : Uptake by accumulation mode sea-salt
    (3) HetIUptakebySALC : Uptake by coarse-mode sea-salt
    
    IBr produced on acidic accum-mode seasalt (when SSAlk(1) <= 0.5):
       Uptake by BrSALA = 0.15 * HetIUptakeBySALA
       Uptake by SALACL = 0.85 * HetIUptakeBySALA
    
    ICl produced on acidic accum-mode seasalt (when SSAlk(2) <= 0.5):
       Uptake by BrSALC = 0.15 * HetIUptakeBySALC
       Uptake by SALCCL = 0.85 * HetIUptakeBySALC
    
    Thus we can retire the HetIxCycle{BrSALA,BrSALC,SALACL,SALCCL}.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 22, 2021
    Configuration menu
    Copy the full SHA
    144d9a0 View commit details
    Browse the repository at this point in the history
  4. Clean up CLD_PARAMS, GAMMA_NO3 and HETNO3_Cl in gckpp_HetRates.F90

    In KPP/fullchem/gckpp_HetRates.F90:
    
    (1) Updates to routine CLD_PARAMS:
        - General cleanup
        - Return argument ClearFr = 1 - CldFr
        - Now reference most met variables from State_Met
        - Updated comments & whitespace updates
    
    (2) Updates to routine GAMMA_NO3:
        - Whitespace alignment and readability updates
        - Now use H%NO3%SrMw instead of taking the square root
        - Return value was renamed to "gamma"
    
    (3) Updates to routine HetNO3_Cl
        - Whitespace alignment and readability updates
        - Now pass H%NO3%SrMw to ARSL1K instead of taking the
          square root of the molecular weight of NO3
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 22, 2021
    Configuration menu
    Copy the full SHA
    1a975bb View commit details
    Browse the repository at this point in the history

Commits on Mar 23, 2021

  1. Add description of the HET array to aerochem/gckpp.kpp

    We now have documented the reactions that are stored in each element
    of the HET array in gckpp.kpp.  We have also rebuilt the KPP files
    with KPP-for-GEOS-Chem 2.3.1_gc, so that these comments are now
    also included in gckpp_Global.F90.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 23, 2021
    Configuration menu
    Copy the full SHA
    6ea9f1b View commit details
    Browse the repository at this point in the history
  2. Inline OH het rate calculation and remove routine HETOH

    The HETOH routine calls routine GAMMA_NO3 and ARSL1K twice.
    These have now been inlined into the main body of routine SET_HET
    and the HETOH routine has been removed.
    
    NOTE: This update will cause differences w/r/t the prior code,
    because a hardwired molecular weight for OH (17 g/mole) was used
    there... but the value from the species database is now 17.01 g/mole.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 23, 2021
    Configuration menu
    Copy the full SHA
    f5c44e9 View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2021

  1. Clean up 1st order uptake functions in gckpp_HetRates.F90 + related c…

    …hanges
    
    gckpp.kpp and gckpp_Global.F90:
    - Add comments to HSTAR_EPOX to denote its value is from Ngyuen et al 2014
    
    gckpp_HetRates.F90:
    - Add comments describing each aerosol type
    - Remove looping & branching in 1st-order uptake functions
    - Now call subroutine ArsL1k for each aerosol type in 1st-order uptake fns
    - ArsL1k now returns 0.0 instead of 1e-30 if rate cannot be computed
    
    print_het.H
    - Also print out temperature and relative humidity at the debug box
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 24, 2021
    Configuration menu
    Copy the full SHA
    e430e63 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1afc441 View commit details
    Browse the repository at this point in the history

Commits on Mar 25, 2021

  1. Minor updates to gckpp_HetRates.F90

    (1) For now, ARSL1K returns 1.0e-30_dp, to avoid div-by-zero issues
        until we can better trap these errors.
    
    (2) Moved Het1stOrderUptakeHO2 so that it is in alphabetical order
    
    (3) Reorderd calls to VOC 1st order subroutine to be in alphabetical order.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 25, 2021
    Configuration menu
    Copy the full SHA
    400008e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c66eeb8 View commit details
    Browse the repository at this point in the history
  3. gckpp_HetRates.F90 updates: Nullify the H object after print_het.H

    Move the nullifcation of the H (HetInfo) object after the print_het.H
    print statements.
    
    Also cosmetic changes, remove REVISION HISTORY sections from
    comment headers.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 25, 2021
    Configuration menu
    Copy the full SHA
    64ca433 View commit details
    Browse the repository at this point in the history

Commits on Mar 26, 2021

  1. Move HET(ind_ITCN, 1) to be alphabetical order w/ other VOC's

    This is a cosmetic change.  All 1st order uptake reactions now
    match the reference code 13.0.1 (excluding numerical noise diffs
    smaller than +/- 2.0e-5%).
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 26, 2021
    Configuration menu
    Copy the full SHA
    2316ce8 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    bf0c143 View commit details
    Browse the repository at this point in the history

Commits on Mar 29, 2021

  1. Build aerochem mechanism with KPP-for-GEOS-Chem 2.3.2_gc (beta)

    (1) Use KPP version 2.3.2_gc (in beta) to rebuild the aerochem
        mechanism files.
    
    (2) Remove XDENA, as this is a duplicate of NUMDEN.
    
    (3) Replace 300.0_dp/TEMP with K300_OVER_TEMP variable.
    
    (4) Comment out the UPDATE_SUN function in gckpp_Rates.F90.
    
    (5) Keep gckpp_Rates.F90 in aerochem separate from fullchem
        (i.e. these are no longer symlinked).
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Mar 29, 2021
    Configuration menu
    Copy the full SHA
    c097013 View commit details
    Browse the repository at this point in the history

Commits on Apr 30, 2021

  1. Initialize new KPP variables in gckpp_Global.F90; Rebuild w/ KPP 2.3.…

    …2_gc
    
    GeosCore/flexchem_mod.F90:
    - Initialize TEMP_OVER_K300, K300_OVER_TEMP and SR_TEMP in
      routine Set_Kpp_Gridbox_Values
    - Initialize MW and SR_MW in Init_FlexChem
    
    KPP/aerochem/gckpp_HetRates.F90:
    - Pass SR_MW to the 1st-order uptake functions
    - Remove TEMP and NUMDEN from CloudHet, these are global variables
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Apr 30, 2021
    Configuration menu
    Copy the full SHA
    e8b3e72 View commit details
    Browse the repository at this point in the history
  2. Prevent div by zero in routine CloudHet (in gckpp_HetRates.F90)

    The computation of branch assumes that kI is always greater than
    zero.  But we have changed ARSL1K to return 0 if the reaction
    probability is undefined.  This would cause a div-by-zero in Cloudhet.
    
    We have now prevented this by only allowing the division if kI > 0,
    otherwise we set branch = 0.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Apr 30, 2021
    Configuration menu
    Copy the full SHA
    a449b19 View commit details
    Browse the repository at this point in the history
  3. Add Henry law variables and T_298 parameter to gckpp_Global

    gckpp.kpp
    - Added T_298 = 298.15_dp parameter, as this is reused
    - Added HENRY_K0 and HENRY_CR parameters
    
    gckpp_HetRates.F90:
    - Define HENRY_K0 and HENRY_CR with values from the species database
    - Remove TEMP, NUMDEN from HetNO3_CL (these are global)
    - Remove T, H from GAMMA_NO3 (these are not needed)
    
    gckpp_Global.F90
    - Rebuilt with KPP 2.3.2_gc
    yantosca committed Apr 30, 2021
    Configuration menu
    Copy the full SHA
    d763c43 View commit details
    Browse the repository at this point in the history

Commits on May 3, 2021

  1. Clean up gckpp_Hetrates through BrNO3 hydrolysis (plus related updates)

    aerochem.eqn
    - Het rxn HO2 = O2 is now changed to HO2 = H2O
    
    gckpp.kpp:
    - Now use INV_T298 as the inverse of T_298, to prevent repeated divisions
    
    gckpp_HetRates.F90:
    - Streamlined HetNO3_Cl, HetBrNO3, HetClNO3_TCld routines
    
    gckpp_{Function, Global, Jacobian, Monitor}.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 3, 2021
    Configuration menu
    Copy the full SHA
    cde676b View commit details
    Browse the repository at this point in the history
  2. Streamline CLOUDHET function and remove optional arguments

    In function CloudHet (in gckpp_HetRates.F90):
    - Remove DO loop; now compute liquid and ice branches w/ inlined code
    - Arguments branchLiq and branchIce are no longer OPTIONAL, this
      should result in more efficient execution
    
    Also make sure to pass branchLiq and branchIce with placeholder
    arguments (1.0_dp) in calls to CloudHet where necessary.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 3, 2021
    Configuration menu
    Copy the full SHA
    1aa8bdc View commit details
    Browse the repository at this point in the history

Commits on May 4, 2021

  1. Streamline CloudHet, Gamma_ClNO3_{Aer,Ice} and compute ClNO3 hydrolysis

    (1) Pass branchliq, branchice to CloudHet as non-optional arguments
    (2) Remove PRESENT statements from CloudHet
    (3) Add parameters to Gamma_Cld_{Aer, Ice} to avoid repeated computations
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 4, 2021
    Configuration menu
    Copy the full SHA
    7a9c952 View commit details
    Browse the repository at this point in the history

Commits on May 7, 2021

  1. Peel off 1st-order rate equations (except iodine) into gckpp.kpp

    We have been able to peel off many of the gas-phase 1st-order rate-law
    fucnctions from gckpp_HetRates.F90 and add them into gckpp.kpp.  From
    there, they will be included the KPP-generated source code whenever
    the mechanism is rebuilt.
    
    flexchem_mod.f90:
    - Use keyword arguments in calls to Set_Het and Set_Kpp_Gridbox_Values
    
    state_chm_mod.F90:
    - Removed the HetInfo object and HetState type
    
    gckpp.kpp
    - Add new rate law functions from gckpp_HetRates.F90
    - Define derived type object State_Het to pass fields to rate-law functions
    - Define new HetState type for the State_Het object
    
    aerochem.eqn
    - Now reference rate-law functions defined in gckpp.kpp
    
    gckpp_HetRates.F90
    - Moved several 1st-order rate-law functions to gckpp.kpp
    - Moved Cld_Params and the computation of halide concs to flexchem_mod.F90
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 7, 2021
    Configuration menu
    Copy the full SHA
    8570744 View commit details
    Browse the repository at this point in the history
  2. Pull out iodine uptake by sulfate/SALA/SALC functions into gckpp.kpp

    We have moved the rate-law functions that compute 1st-order uptake
    of HI, I2O2, I2O3, and I2O4 from gckpp_HetRates.F90 to gckpp.kpp.
    
    We have also made the corresponding updates in aerochem.eqn, and have
    regenerated the solver source code files with KPP 2.3.2_gc.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 7, 2021
    Configuration menu
    Copy the full SHA
    e380c82 View commit details
    Browse the repository at this point in the history

Commits on May 11, 2021

  1. Pull iodine uptake on acidic seasalt rate law functions into gckpp.kpp

    gckpp.kpp:
    - Add logicals ssFineisAlk, ssFineisAcid, ssCoarseisAlk, ssCoarseIsAcid
      to the State_Het object.  These are used to determine if the
      fine/coarse sea salt is acidic or alkaline in rate-law functions.
      This allows us to compute these terms once per grid box.
    - Update rate-law functions to use common variables from gckpp_Global.F90
    
    flexchem_mod.F90:
    - Define the ssFineIsAlk, ssFineIsAcid, ssCoarseIsAlk, ssCoarseIsAcid
      fields of State_Het for each grid box.
    
    aerochem.eqn
    - Now use rate-law functions for the first-order uptake of iodine
      from SALA and SALC.
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    gckpp_HetRates.F90
    - Remove calls to iodine uptake rate-law functions
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 11, 2021
    Configuration menu
    Copy the full SHA
    3c064ff View commit details
    Browse the repository at this point in the history
  2. Finish moving 1st order uptake rate-law functions for iodine species

    gckpp.kpp:
    - Add function kIIR1Ltd (and optimize it to minimize IF/ELSE branches)
    - Remove comments about elemetns of HET that are deleted
    - Trim ending whitespace
    
    aerochem.eqn
    - Call the various iodine uptake rate-law functions
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 11, 2021
    Configuration menu
    Copy the full SHA
    05e3bdc View commit details
    Browse the repository at this point in the history

Commits on May 12, 2021

  1. Peel out rate-functions for hypsis of NO3(g) by Cl- on SALA and SALC

    gckpp.kpp
    - Added Gam_NO3, NO3hypsisClonSALA, NO3hypsisClonSALC functions
    - Added coth and reactodiff_corr functions
    - Removed useless computations from Gam_NO3
    - Trimmed trailing whitespace
    
    aerochem.eqn
    - Replace HET(ind_NO3,2) with function NO3hypsisClonSALA
    - Replace Het(ind_NO3,3) with function NO3hypsisClonSALC
    
    gckpp_HetRates.F90
    - Removed GAMMA_NO3, HetNO3_Cl_SALA, HetNO3_Cl_SALC functions
    - Removed COTH, REACTODIFF_CORR functions
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 12, 2021
    Configuration menu
    Copy the full SHA
    db64221 View commit details
    Browse the repository at this point in the history
  2. Peel NO2/NO3 1st order uptake + cloud rate-law functions into gckpp.kpp

    gckpp.kpp
    - Added CloudHet and SafeDiv functions
    - Remove srMw argument from HO2uptk1stOrd function
    - Add NO2uptk1stOrd and NO2uptk1stOrdAndCloud functions
    - Add NO3uptk1stOrd and NO3uptk1stOrdAndCloud functions
    
    aerochem.eqn
    - Remove SR_MW(ind_HO2) from HO2uptk1stOrd function
    - Replace HET(ind_NO2,1) with NO2uptk1stOrdAndCloud function
    - Replace HET(ind_NO3,1) with NO3uptk1stOrdAndCloud function
    
    gckpp_HetRates.F90
    - Remove CloudHet, Het1stOrderUptakeNO3, NO3_Uptake functions
    - Remove Het1stOrderUptakeNO2, NO2_Uptake functions
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 12, 2021
    Configuration menu
    Copy the full SHA
    133d9cd View commit details
    Browse the repository at this point in the history

Commits on May 13, 2021

  1. Implement N2O5 uptake by clouds (replace HET(ind_N2O5,3) in aerochem.…

    …eqn)
    
    gckpp.kpp
    - Minor updates for numerical stability in function CloudHet
    - Add function Is_SafeDiv
    - Consolidaed NO2 and NO3 cloud uptake functions
    - Rename HetMinLife constant to HET_MIN_LIFE
    - Rename HetMinRate constant to HET_MIN_RATE
    
    aerochem.eqn
    - Replace HET(ind_N2O5,3) with call to N2O5uptkByCloud
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    gckpp_HetRates.F90
    - Removed code that is now in gckpp.kpp
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 13, 2021
    Configuration menu
    Copy the full SHA
    54bc86b View commit details
    Browse the repository at this point in the history
  2. Implement N2O5 uptake by stratospheric HCl (replace HET(ind_N2O5,2))

    gckpp.kpp
    - Modify routine kIIR1Ltd for computational efficiency
    - Add routine N2O5uptkByStratHCl
    
    aerochem.eqn
    - Replace HET(ind_N2O5,2) by function call to N2O5uptkByStratHCl
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    gckpp_HetRates.F90
    - Remove function HetN2O5_HCl
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 13, 2021
    Configuration menu
    Copy the full SHA
    0ee4fb1 View commit details
    Browse the repository at this point in the history

Commits on May 14, 2021

  1. Peel out N2O5 uptake by H2O rate law function into gckpp.kpp

    We have now migrated the rate-law functions that compute the update
    of N2O5 by H2O from gckpp_HetRates.F90 into KPP.
    
    gckpp.kpp
    - Add functions N2O5uptkByH2O, N2O5_InorgOrg, ClNO2_BT
    - Clean up N2O5uptkByH2O from original HETN2O5 function
    
    aerochem.eqn
    - Replace HET(ind_N2O5,1) with N2O5uptkByH2O function call
    
    gckpp_HetRates.F90:
    - Remove HETN2O5, N2O5, N2O5_InorgOrg, ClNO2_BT
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 14, 2021
    Configuration menu
    Copy the full SHA
    815b81a View commit details
    Browse the repository at this point in the history
  2. Peel rate-law funcs for uptake of N2O5 by SALACL, SALCCL into gckpp.kpp

    gckpp.kpp
    - Added functions N2O5uptkBySALACL and N2O5uptkBySALCCL
    - Updated comments
    
    aerochem.eqn
    - Replace HET(ind_N2O5,4) with call to N2O5uptkBySALACL
    - Replace Het(ind_N2O5,5) with call to N2O5uptkbySALCCL
    
    gckpp_HetRates.F90
    - Remove obsolete code
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 14, 2021
    Configuration menu
    Copy the full SHA
    75b2dc2 View commit details
    Browse the repository at this point in the history

Commits on May 17, 2021

  1. Peel rate-law funcs for OH loss by SALACL and SALCCL into gckpp.kpp

    gckpp.kpp
    - Add rate-law functions OHlossBySALACl and OHlossBySALCCl
    - Also add functions for O3 loss (but these are still being validated)
    - Add BrConc_Cld and ClConc_Cld to State_Het
    
    aerochem.eqn
    - Replace HET(ind_OH,1) with call to OHuptkBySALACl
    - Replace HET(ind_OH,2) with call to OHuptkBySALCCl
    - Zero out HET(ind_O3,{1,2,3}) in preparation for next update
    
    gckpp_HetRates.F90
    - Removed code that has now been peeled into gckpp.kpp
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 17, 2021
    Configuration menu
    Copy the full SHA
    757d6eb View commit details
    Browse the repository at this point in the history

Commits on May 18, 2021

  1. Peel out O3 + HBr, O3 + BrSALA, O3 + BrSALC functions into gckpp.kpp

    gckpp.kpp
    - Add function O3uptkByBrInTropCloud
    - Add function O3uptkByHBrInCloud
    - Add function O3uptkByCloudAndBrSALA
    - Add function O3uptkByCloudAndBrSALC
    - Add function Gamma_O3_Br
    - CloudHet now skips computing rates if the branch ratio is zero
    - Rename several fields in State_Het (e.g. Brconc_* --> Br_conc_*, etc)
    - Move parameter HSTAR_EPOX into EpoxUptkGamma, it's only needed there
    
    aerochem.eqn
    - Replace HET(ind_O3,1) with call to O3uptkByBrInTropCloud
    - Replace HET(ind_O3,2) with call to O3uptkByCloudAndBrSALA
    - Replace HET(ind_O3,3) with call to O3uptkByCloudAndBrSALC
    
    gckpp_HetRates.F90
    - Use H instead of State_Het for clarity in several routines
    - Remove H%HetTemp
    - Compute Br and Cl branching ratios in Halide_Conc (so that we don't
      have to keep recomputing them in the functions)
    
    flexchem_mod.F90
    - Use new field names of State_Het where necessary
    
    species_database.yml
    - Add Henry_CR and Henry_K0 for O3
    
    gckpp_Global.F90 and gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 18, 2021
    Configuration menu
    Copy the full SHA
    186a147 View commit details
    Browse the repository at this point in the history

Commits on May 19, 2021

  1. Peel out rate functions for HBr uptake by SALA and SALC to gckpp.kpp

    gckpp.kpp:
    - Add functions HBrUptkBySALA and HBrUptkBySALC
    - Add parameters for aerosol types (instead of hardwired numbers)
    - Add parameters for fine/coarse (for SSALK, aWATER etc)
    - Add parameters for KHETI_SLA indices (instead of hardwired numbers)
    - Updated array references with these parameters accordingly
    
    aerochem.eqn:
    - Replaced HET(ind_HBr,1) with call to HBrUptkBySALA
    - Replaced HET(ind_HBr,2) with call to HBrUtpkBySALC
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 19, 2021
    Configuration menu
    Copy the full SHA
    d05f9b8 View commit details
    Browse the repository at this point in the history
  2. Peel out rate law funcs for BrNO3 + H2O and BrNO3 + HCl into gckpp.kpp

    gckpp.kpp:
    - Added functions BrNO3uptkByH2O and BrNO3uptkByHCl
    - Renamed some index parameters to reduce chance of namespace collisions
    - Updated comments
    
    aerochem.eqn:
    - Replaced HET(ind_BrNO3,1) with call to BrNO3uptkByH2O
    - Replaced HET(ind_BrNO3,2) with call to BrNO3uptkByHCl
    
    gckpp_HetRates.F90
    - Remove obsolete code
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 19, 2021
    Configuration menu
    Copy the full SHA
    38b2d8e View commit details
    Browse the repository at this point in the history

Commits on May 21, 2021

  1. Add variables to store terms like 4*R*T or 8*RSTARG*T to gckpp.kpp

    In the hetchem rate-law functions there are many expressions that begin
    with 4.0 * R * TEMP, etc.  These can be pulled out and stored into
    constants so that they only need to be computed once.  We have added
    as KPP global variables in gckpp.kpp:
    
    INV_TEMP        = 1 / TEMP
    FOUR_R_T        = 4 * CON_R * TEMP
    FOUR_RGASLATM_T = 4 * RGASLATM * TEMP
    EIGHT_RSTARG_T  = 8 * RSTARG * T
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 21, 2021
    Configuration menu
    Copy the full SHA
    61765a5 View commit details
    Browse the repository at this point in the history

Commits on May 24, 2021

  1. Peel out hetchem rate-law function for HOBr + H2O into gckpp.kpp

    gckpp.kpp:
    - Add functions Br2_Yield, Gam_HOBr_Cld, Gam_HOBr_Ice,
      and HOBrUptkByHBrAndTropCloud
    - Add State_Het%Br_over_Cl_Cld field to the HetState derived type
    - Renamed HBr_th to HBr_theta
    - Renamed HCl_th to HCl_theta
    - Renamed HNO3_th to HNO3_theta
    
    aerochem.eqn
    - Replace HET(ind_HOBr,1) with call to HOBrUptkByHBrAndTropCloud
    
    gckpp_HetRates.F90:
    - Streamline subroutine Get_Theta_Ice
    - Assign State_Het%Br_over_Cl_Cld field
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 24, 2021
    Configuration menu
    Copy the full SHA
    031e2ef View commit details
    Browse the repository at this point in the history

Commits on May 26, 2021

  1. Peel out hetchem rate-law fns for HOBr+HBr and HOBr+HCl into gckpp.kpp

    gckpp.kpp
    - Added functions Br2_Yield, Gam_HOBr_Cld, Gam_HOBr_Ice,
      HOBrUptkByHBrAndTropCloud, HOBrUptkByHClAndTropCloud.
    - Remove branching (i.e. IF (X==1) THEN etc.) from these functions
    
    aerochem.eqn:
    - Replace HET(ind_HOBr,1) with call to HOBrUptkByHBrAndTropCloud
    - Replace HET(ind_HOBr,2) with call to HOBrUptkByHClAndTropCloud
    
    gckpp_HetRates.F90
    - Remove more obsolete routines that are now in gckpp.kpp
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 26, 2021
    Configuration menu
    Copy the full SHA
    05ac72e View commit details
    Browse the repository at this point in the history

Commits on May 27, 2021

  1. Configuration menu
    Copy the full SHA
    9aed89d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    99c3f7f View commit details
    Browse the repository at this point in the history
  3. Uncomment debug code in gckpp_HetRates.F90

    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 27, 2021
    Configuration menu
    Copy the full SHA
    7d6b6c3 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    b7af204 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    f00deae View commit details
    Browse the repository at this point in the history
  6. Merge branch 'feature/msl/kpp' of /n/home13/mslong/AeroChem/src/GEOS-…

    …Chem into feature/msl/kpp
    
    This commit combines the work done by Mike Long and Bob Yantosca
    in bringing the code from sulfate_mod.F90 and gckpp_HetRates.F90
    into KPP.
    
    Resolved conflicts in:
    1. GeosCore/flexchem_mod.F90
    2. Headers/species_database_mod.F90
    3. KPP/aerochem/aerochem.eqn
    4. KPP/aerochem/gckpp.kpp
    
    Rebuilt these files with KPP 2.3.2_gc
    1. KPP/aerochem/gckpp_Function.F90
    2. KPP/aerochem/gckpp_Global.F90
    3. KPP/aerochem/gckpp_Jacobian.F90
    4. KPP/aerochem/gckpp_Monitor.F90
    5. KPP/aerochem/gckpp_Rates.F90
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 27, 2021
    Configuration menu
    Copy the full SHA
    1a7ab1b View commit details
    Browse the repository at this point in the history
  7. Merge modifications from Mike Long for Aqchem and Sulfate chem

    KPP/build_mechanism.sh
    - Make sure we do not delete gckpp_AqRates.F90 and gckpp_Sulfate.F90
    
    KPP/gckpp_AqRates.F90
    KPP/gckpp_Sulfate.F90
    - Restored from prior commit
    
    KPP/gckpp_HetRates.F90
    - Make ARSL1K, KIIR1LTD, and KIIR1R2L public
    - Comment out the remaining code not already pulled into gckpp.kpp
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed May 27, 2021
    Configuration menu
    Copy the full SHA
    94516cf View commit details
    Browse the repository at this point in the history

Commits on Jun 4, 2021

  1. Allow skipping of "dummy" KPP placeholder species in the species DB

    Headers/species_mod.F90:
    - Add nOmitted and nRealSpc to the SpcIndCt type
    - Add OmittedId in the Species type
    - Skip defining a new species in Spc_Create if Is_Omitted=T
    
    Headers/species_database_mod.F90:
    - Zero SpcCount%nOmitted and SpcCount%nRealSpc
    - Test if a species is omitted.  If it is, increment SpcCount%nOmitted
      and then cycle to the next species
    - Subtract SpcCount%nOmitted from ThisSpc%modelId
    - Don't throw an error for omitted species
    
    Headers/state_chm_mod.F90:
    - Add State_Chm%nOmitted field
    - Now define State_Chm%nSpecies with SpcCount%nRealSpc
    - Allocate enough slots in the KPP mapping vectors so that the indexing
      (which includes the omitted species) comes out correct
    
    GeosCore/flexchem_mod.F90:
    - Update the loop where KPP variables MW, SR_MW, HENRY_K0, HENRY_CR
      are defined to skip "dummy" placeholder species
    
    KPP/aerochem/gckpp_Sulfate_mod.F90
    - Make sure is_HMS > 0 before using it
    - Uncomment call to HET_DROP_CHEM
    - Make sure FC > 0 before entering an IF block where it is
      found in a denominator
    
    run/shared/species_database.yml:
    - Add dummy species with Is_Omitted: true tags
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 4, 2021
    Configuration menu
    Copy the full SHA
    73fa6bc View commit details
    Browse the repository at this point in the history
  2. Make sure to zero L2S, L3S .. L6S in gckpp_Sulfate.F90 (temporarily)

    This can be undone later.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 4, 2021
    Configuration menu
    Copy the full SHA
    92907a0 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    ebdffca View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    6a2710c View commit details
    Browse the repository at this point in the history

Commits on Jun 7, 2021

  1. Configuration menu
    Copy the full SHA
    83878c8 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    88a6081 View commit details
    Browse the repository at this point in the history
  3. Temporarily comment out call to GET_DUST_ALK in gckpp_Sulfate.F90

    We will restore this later
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 7, 2021
    Configuration menu
    Copy the full SHA
    46ff311 View commit details
    Browse the repository at this point in the history

Commits on Jun 8, 2021

  1. some cleanup - MSL

    michael-s-long committed Jun 8, 2021
    Configuration menu
    Copy the full SHA
    36651b3 View commit details
    Browse the repository at this point in the history
  2. Fix minor issues post-merge with feature/msl/kpp code

    aerochem.eqn:
      - Remove leftover ALKCLD and ALKDST{1-7} species.  These are for the
        acid dust uptake but are not needed here
    
    gckpp_Util.F90: R
      - Rebuilt with KPP 2.3.2_gc
    
    run/GCClassic/input.geos.templates/input.geos.fullchem
       - Added HMS as an advected species
    
    run/shared/species_database.yml:
       - Remove DUMMY, HpA, HpC species, these were removed from aerochem.eqn
       - Add entries for HMS, HSO3m, SO3mm
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 8, 2021
    Configuration menu
    Copy the full SHA
    c2fa6da View commit details
    Browse the repository at this point in the history
  3. Update the KPP/build_mechanism.sh script

    (1) Only remove *.F90 files that are generated by KPP before calling
        the kpp executable.  This will allow us to leave other files
        (such as include files) untouched.
    
    (2) Throw an error and exit if the gckpp.kpp file is not found.
    
    (3) Update comments
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 8, 2021
    Configuration menu
    Copy the full SHA
    0b3c02a View commit details
    Browse the repository at this point in the history
  4. Add State_Het%WetArea field; simpify some expressions:

    gckpp.kpp
       - Add State_Het%wetArea(14) field to gckpp.kpp global definitions.
       - Add Buf_Cap_SALAAL and Buf_Cap_SALCAL
    
    flexchem_mod.F90:
       - State_Het%wetArea is defined from State_Chm%WetAeroArea
         in Set_Kpp_Gridbox_Values (in flexchem_mod.F90)
       - Use KPP indices ind_HSO3m and ind_SO3mm in flexchem_mod.F90 instead
         of using the Ind_() function, which is much slower.
       - Define Buf_Cap_SALAAL = MW(ind_SALAAL) * 7.0e-5
       - Define Buf_Cap_SALCAL = MW(ind_SALCAL) * 7.0e-5
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 8, 2021
    Configuration menu
    Copy the full SHA
    e5aa7b1 View commit details
    Browse the repository at this point in the history
  5. Add Buf_Cap_SALAAL and Buf_Cap_SALCAL to gckpp.kpp; rebuild mechanism

    This should have been done at the last commit but evidently the
    changes never got staged.
    
    gckpp.kpp
       - Add Buf_Cap_SALAAL and Buf_Cap_SALACL
    
    flexchem_mod.F90
       - Set Buf_Cap_SALAAL = MW(ind_SALAAL) * 7.0e-5_dp
       - Set Buf_Cap_SALCAL = MW(ind_SALCAL) * 7.0e-5_dp
    
    gckpp_Global.F90:
       - Rebuild with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 8, 2021
    Configuration menu
    Copy the full SHA
    381a749 View commit details
    Browse the repository at this point in the history

Commits on Jun 9, 2021

  1. Configuration menu
    Copy the full SHA
    5df5d07 View commit details
    Browse the repository at this point in the history

Commits on Jun 11, 2021

  1. Migrate rate functions from gckpp.kpp to aerochem_RateLawFuncs.F90

    The length of the rate law function library (included in the
    #INLINE F90_RATES section of gckpp.kpp) was becoming too long
    for KPP to inline into gckpp_Rates.F90.
    
    As a solution, we have moved all of the rate law functions to a new
    F90 module (aerochem_RateLawFuncs.F90).  In gckpp.kpp, we place a
    "USE aerochem_RateLawFuncs" statement within the #INLINE F90_RCONST
    block.  In this way, the rate law functions are directly included
    in the subroutine Update_Rconst() in gckpp_Rates.F90.
    
    We have rebuilt the KPP/aerochem/gckpp_*.F90 files with a preliminary
    version of KPP 2.3.3_gc (currently in the dev branch of the KPP repo).
    
    Also, we save the prior value of C(ind_SALAAL) and C(ind_SALCAL)
    in State_Het%SALAAL_save and State_Het%SALCAL save.  This avoids
    us having to use State_Chem%Species within the aerochem_RateLawFuncs.F90
    module.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 11, 2021
    Configuration menu
    Copy the full SHA
    bb9c06e View commit details
    Browse the repository at this point in the history
  2. Move rate law functions and parameters to aerochem_RateLawFuncs.F90

    KPP evidently has a limit as to how long a rate-law library that is
    inlined with F90_RATES can be.  To get around this issue, we have
    moved the rate-law functions to a module named aerochem_RateLawFuncs.F90,
    which is inlined with F90_RCONST.  This will get referenced directly
    from subroutine Update_RConst in gckpp_Rates.F90.
    
    We can also move all of the the defined parameters in gckpp_Global.F90
    (except for CON_R) can be moved to aerochem_RateLawFuncs.F90, where they
    are now declared PRIVATE.  This will avoid namespace collisions.
    
    NOTE: There seems to be a KPP parsing error that sometimes adds I2O4
    to the end of lines.  Continuing to investigate.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 11, 2021
    Configuration menu
    Copy the full SHA
    567b959 View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2021

  1. Peel out HOBr + BrSALA rate law function into aerochem_RateLawFuncs.F90

    We have migrated the code that computes the hetchem reaction rate of
    HOBr + BrSALA = Br2 from gckpp_HetRates.F90 into the new rate law
    library module aerochem_RateLawFuncs.F90.  This involved the following
    updates:
    
    aerochem_RateLawFuncs.F90:
    - add IMPLICIT NONE
    - add functions Gam_HOBr_Aer and HOBrUptkByBrSALAandTropCloud
    - cosmetic & formatting updates
    
    aerochem.eqn:
    - Remove obsolete rxns
    - Replace HET(ind_HOBr,5) with call to HOBrUptkByBrSALAandTropCloud
    
    gckpp.kpp
    - add Br_over_Cl_SALA and Br_over_Cl_SALC scalar fields to the
      HetState derived type definition
    
    gckpp_HetRates.F90:
    - In routine Halide_Conc, compute State_Het%Br_over_Cl_SALA field
    - In routine Halide_Conc, compute State_Het%Br_over_Cl_SALC field
    
    flexchem_mod.F90:
    - Remove obsolete indices id_SALA and id_SALC
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 22, 2021
    Configuration menu
    Copy the full SHA
    669a855 View commit details
    Browse the repository at this point in the history
  2. Peel out rate law fn for HOBr + BrSALC into aerochem_RateLawFuncs.F90

    The rate-law function for HOBr + BrSALC = Br2 has now been peeled out
    of gckpp_HetRates and into aerochem_RateLawFuncs.F90:
    
    aerochem_RateLawFuncs.F90:
    - Add function HOBrUptkByBrSALCandTropCloud (which is a copy of
      function HOBrUptkByBrSALAandTropCloud) with various arguments updated
    
    aerochem.eqn
    - Replace HET(ind_HOBr,6) with call to HOBrUptkByBrSALCandTropCloud
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 22, 2021
    Configuration menu
    Copy the full SHA
    dc5e643 View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2021

  1. Now use _SSA instead of _SALA and _SSC instead of _SALC in State_Het

    Some of the variable names in State_Het used the _SALA and _SALC suffixes
    (e.g. Br_conc_SALA, Cl_conc_SALA).  But this can be misleading because
    in the case of Br_Conc_SALA, this is Br- concentration in sea salt
    aerosol which comes from BrSALA.  Therefore, to make things more
    generic and to also line up with the SSA and SSC parameters for
    the aerosol types, we now use _SSA and _SSC suffices for fields
    of the State_Het object.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 23, 2021
    Configuration menu
    Copy the full SHA
    0c38144 View commit details
    Browse the repository at this point in the history
  2. Peel out rate law functions for HOBr + SALACL and HOBr + SALCCL

    aerochem_RateLawFuncs.F90:
    - Added function HOBrUptkBySALACLandTropCloud
    - Added function HOBrUptkBySALCCLAndTropCloud
    - Removed unused variables
    
    aerochem.eqn
    - Replace HET(ind_HOBr, 3) with call to HOBrUptkBySALACLAndTropCloud
    - Replace HET(ind_HOBr, 4) with call to HOBrUptkBySALCCLAndTropCloud
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 23, 2021
    Configuration menu
    Copy the full SHA
    b75b5e7 View commit details
    Browse the repository at this point in the history
  3. Move common rate-law utility functions into aerochem/rateLawUtilFuncs…

    ….F90
    
    We have created a new module to contain common functions that many
    of the rate-law computations use.  These have been split off from
    aerochem_RateLawFuncs.F90 into rateLawUtilFuncs.F90.  These include
    the functions ARS_L1K, GCARR_*, CloudHet, kIIR1Ltd, ReactoDiff_Corr,
    Safe_Div, and Is_Safe_Div.
    
    Right now we are storing this in the aerochem folder but this could
    be moved to another folder later on.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 23, 2021
    Configuration menu
    Copy the full SHA
    9c2b080 View commit details
    Browse the repository at this point in the history
  4. Updates to aerochem_RateLawFuncs.F90 for consistency & efficiency

    k_HOBr_HSO3 is now k_HOBr_HSO3m    (HSO3m = HSO3-)
    
    k_HOBr_HSO3_2 is now k_HOBr_SO3mm  (SO3mm = SO3--)
    
    Also removed brIce, dummy, area variables where not needed.
    
    Also, when computing the branching ratios in the HOBrUptk* functions,
    reorder the logic so that the function call to Br2_Yield will only
    occur if the Br/Cl- ratio is <= 5.0e-4.  This avoids unnecessary
    function calls.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 23, 2021
    Configuration menu
    Copy the full SHA
    708b634 View commit details
    Browse the repository at this point in the history
  5. Modified a couple fields in the State_Het derived type

    gckpp.kpp
    - In the State_Het derived type definition:
      (1) mHNO4 is now HNO4_molal
      (2) mNO3 iis now NO3_molal
      (3) mSO4 is now SO4_molal
      (4) Removed fupdateHOBr
      (5) Removed fupdateHOCl
    
    flexchem_mod.F90
    - Use _dp instead of _f8
    - Assign HSO4_molal, NO3_molal, NO4_molal fields of State_Het
    - Remove assignment of fupdateHOBr, fupdateHOCl fields of State_Het
    (4) Updated comments
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 23, 2021
    Configuration menu
    Copy the full SHA
    2da1384 View commit details
    Browse the repository at this point in the history
  6. Peel out HOBr + HSO3m and HOBr + SO3mm rate-law functions

    aerochem_RateLawFuncs.F90:
    - Add function HOBrUptkByHSO3mAndTropCloud
    - Add function HOBrUptkBySO3mmAndTropCloud
    
    aerochem.eqn:
    - Replace HET(ind_HOBr,7) with call to HOBrUptkByHSO3mAndTropCloud
    - Replace Het(ind_HOBr,8) with call to HOBrUptkBySO3mmAndTropCloud
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 23, 2021
    Configuration menu
    Copy the full SHA
    8d3f295 View commit details
    Browse the repository at this point in the history

Commits on Jun 30, 2021

  1. First set of modifications for pulling out ClNO3 + H2O rate law funcs

    aerochem_RateLawFuncs.F90:
    - Add function Gam_ClNO3_Aer
    - Add function Gam_ClNO3_Ice
    - Add Function ClNO3uptkByH2OandTropCloud
    
    aerochem.eqn
    - Replace HET(ind_ClNO3,1) with call to ClNO3uptkByH2OandTropCloud
    
    gckpp_HetRates.F90
    - Define State_Het%frac_SALACL in routine Halide_Conc
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    NOTE: Still need to pull out the function calls from the
    old HetClNO3_TCld routine...
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jun 30, 2021
    Configuration menu
    Copy the full SHA
    3bf15a3 View commit details
    Browse the repository at this point in the history

Commits on Jul 1, 2021

  1. Partial peelout of ClNO3 + HCl rate law functions

    aerochem_RateLawFuncs.F90
    - Added function ClNO3uptkByHClAndTropCloud, but disabled the
      algorithm from the hold HetClNO3_TCld, which produces unexplained
      numerical diffs.
    
    aerochem.eqn
    - Replace Het(ind_ClNO3,2) with ClNO3uptkByHClAndTropCloud
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 1, 2021
    Configuration menu
    Copy the full SHA
    b3d4428 View commit details
    Browse the repository at this point in the history
  2. Add zero-diff updates for hetchem

    aerochem_RateLawFuncs.F90:
    - Add function ClNO3uptkByHBrandTropCloud, but skip the
      stratopsheric computation for now.
    - Add function ClNO3uptkByBrSALAandTropCloud, which is not yet
      activated
    
    aerochem.eqn
    - Replace Het(ind_ClNO3,3) with call to ClNO3uptkByHBrandTropCloud
    - Replace het(ind_ClNO3,4) with 0.0_dp for now
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.2_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 1, 2021
    Configuration menu
    Copy the full SHA
    74b4611 View commit details
    Browse the repository at this point in the history
  3. Peel out HOCl + HBr rate law function (but still issue w/ KHETI_SLA(9)

    aerochem_RateLawFuncs.F90:
    - Add function HOClUptkByHBr
    
    aerochem.eqn
    - Replace HET(ind_HOCl,2) with call to HOClUptkByHBr
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    flexchem_mod.F90:
    - Explicitly copy State_Chm%KHETI_SLA(1:11) to State_Het%KHETI_SLA
      in order to avoid any issues
    
    NOTE: Multiplying State_Het%KHETI_SLA(9) * State_Het%xArea(13)
    introduces numerical differences.  Perhaps from a problem upstream.
    Will look at this later.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 1, 2021
    Configuration menu
    Copy the full SHA
    20a03b9 View commit details
    Browse the repository at this point in the history

Commits on Jul 6, 2021

  1. Fix numerical instability in ucx_mod.F90 and State_Chm%KHETI_SLA

    In GeosCore/ucx_mod.F90:
    
    (1) In routine CALC_STRAT_AER, make sure that all PRIVATE variables
        are initialized or zeroed in the !$OMP PARALLEL loop.  This will
        help to prevent numerical instability issues.
    
    (2) In routine CALC_SLA_GAMMA, set RXNGAMMA(2), RXNGAMMA(5),
        RXNGAMMA(9), and RXNGAMMA(11) to 0.0_f8 instead of TINY(1e0_f8).
        The TINY function returns the smallest positive number representable
        by REAL*8 (which is ~1e-308), which is very close to the range
        of denormal numbers.  Using 0.0_f8 will set these elements to
        exactly zero, which should eliminate any numerical noise or
        numerical instability.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 6, 2021
    Configuration menu
    Copy the full SHA
    999f748 View commit details
    Browse the repository at this point in the history
  2. Restore KHETI_SLA(HOCl_plus_HBr) term in hetchem routine HOClUptkByHBr

    We had previously commmented out the term
    
      k = k + H%xArea(SLA) * H%KHETI_SLA(HOCl_plus_HBr)
    
    because this was introducing numerical noise that could not be
    matched to the reference code.  The problem was due to the field
    State_Chm%KHETI_SLA(9) being set to TINY(1.0e_f8) in ucx_mod.F90.
    The TINY function returns the smallest possible positive value for
    REAL*8 in this case, which is ~1e-308.  This value is very close to
    being denormal, and can cause numerical instability.  We fixed that
    issue by setting State_Chm%KHETI_SLA(9) = 0.0_f8, which avoids the
    instability.
    
    With the instability fixed, we are able to restore this term to
    function HOClUptkByHBr, and we have obtained identical results
    to the reference code (with the same fix in ucx_mod.F90).
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 6, 2021
    Configuration menu
    Copy the full SHA
    fc2591d View commit details
    Browse the repository at this point in the history
  3. Peel out rate law function for ClNO3 + HBr into aerochem_RateLawFuncs…

    ….F90
    
    aerochem_RateLawFuncs.F90:
    - Add tropopsheric cloud uptake (following the algorithm of the old
      HetClNO3_TCld routine) into ClNO3UptkByHBrAndTropCloud
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 6, 2021
    Configuration menu
    Copy the full SHA
    be041bd View commit details
    Browse the repository at this point in the history
  4. Peel out ClNO3 + HCl rate law function into aerochem_RateLawFuncs.F90

    We have added the algorithm for ClNO3 + HCl uptake in tropospheric ice
    cloud to rate law function ClNO3uptkByHClAndTropCloud.
    
    Previously, we had only implemented the stratospheric uptake in
    this function, as we had seen numerical noise.  This numerical noise
    has since been fixed.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 6, 2021
    Configuration menu
    Copy the full SHA
    95489b6 View commit details
    Browse the repository at this point in the history

Commits on Jul 12, 2021

  1. Configuration menu
    Copy the full SHA
    a11e0ab View commit details
    Browse the repository at this point in the history

Commits on Jul 14, 2021

  1. Temporarily disable ClNO3, ClNO2, HOCl rate law functions

    This will allow us to peel out rate-law functions one by one, in order
    to better avoid errors.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 14, 2021
    Configuration menu
    Copy the full SHA
    7161d00 View commit details
    Browse the repository at this point in the history
  2. Zero-diff updates for ClNO3 + { HBr, HCl, BrSALA }

    We have restarted peeling out the rate law functions for ClNO3 + HBr,
    ClNO3 + HCl, and ClNO3 + BrSALA.  The ClNO3 + BrSALA function yields
    some very small numerical differences in the clear-sky part of the
    computation, this still needs to be investigated.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 14, 2021
    Configuration menu
    Copy the full SHA
    6211575 View commit details
    Browse the repository at this point in the history
  3. Stash through peel out of ClNO3 + BrSALC

    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 14, 2021
    Configuration menu
    Copy the full SHA
    5c8abe1 View commit details
    Browse the repository at this point in the history
  4. Peel out rate law functions for ClNO3 + { SALACL, SALCCL }

    aerochem.eqn:
    - Replace HET(ind_ClNO3,4) by call to ClNO3uptkByBrSALA (prev commit)
    - Replace HET(ind_ClNO3,5) by call to ClNO3uptkByBrSALC (prev commit)
    - Replace HET(ind_ClNO3,6) by call to ClNO3uptkBySALACL
    - Replace HET(ind_ClNO3,7) by call to ClNO3uptkBySALCCL
    
    aerochem_RateLawFuncs.F90
    - Add function ClNO3uptkByBrSALA (prev commit), partially disabled
    - Add function ClNO3uptkByBrSALC (prev commit)
    - Add function ClNO3uptkBySALACL, partially disabled
    - Add function ClNO3uptkBySALCCL
    - NOTE: "partially disabled" means that we have commented out the
      fine aerosol uptake parts of these functions, pending investigation
      of numerical differences
    
    gckpp_HetRates.F90:
    - In routine Get_Halide_SsaConc, don't multiply by 0.3333333, but instead
      divide by 3.0_dp in expression for v_tot.  This will avoid numerical
      precision issues.
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 14, 2021
    Configuration menu
    Copy the full SHA
    88cf71c View commit details
    Browse the repository at this point in the history

Commits on Jul 15, 2021

  1. Peel out HOCl + HBr and HOCl + HCl (partial) rate law functions

    aerochem.eqn:
    - Replace HET(ind_HOCl,1) with call to HOClUptkByHClAndTropCloud
    - Replace HET(ind_HOCl,2) with call to HOClUptkByHBr
    
    aerochem_RateLawFuncs.F90:
    - Add function Gam_HOCl_Cld
    - Add function HOClUptkByHClAndTropCloud (partially implemented)
    - Add function HOClUptkByHBr
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    NOTE: The rate computations in tropospheric cloud are causing some
    numerical differences.  These have been disabled, pending investigation.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    c167423 View commit details
    Browse the repository at this point in the history
  2. Complete peelout of HOCl + HCl rate law function

    aerochem_RateLawFuncs.F90:
    - Fix error in routine Gam_HOCl_Cld.  The H_X (Henry's law term) should
      have been included in the term for gb_tot, but was omitted.
    
    This results in zero diffs w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    b20001b View commit details
    Browse the repository at this point in the history
  3. Simplify coding of Gam_HOCl_Cld and minor changes

    We now compute branchCl = k_Cl / k_tot in the hetchem routine
    Gam_HOCl_Cld instead of computing it externally.
    
    This update gives zero diffs w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    00b2daf View commit details
    Browse the repository at this point in the history
  4. Peel out HOCl + SALACL rate law function

    aerochem.eqn
    - Add function call to HOClUptkBySALACLandTropCloud for HOCl + SALACL rxn
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    eace04c View commit details
    Browse the repository at this point in the history
  5. Peel out HOCl + SALCCL rate law function

    aerochem.eqn
    - Add call to HOClUptkBySALCCLandTropCloud for HOCl + SALCCL rxn
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    c76cc22 View commit details
    Browse the repository at this point in the history
  6. Peel out rate law functions for HOCl + HSO3m and HOCl + SO3mm

    gckpp.kpp
    - Rename HSO3_conc_Cld to HSO3_aq_Cld in TYPE(HetState)
    - Rename SO3_conc_Cld to SO3_aq_Cld in TYPE(HetState)
    - Add TSO3_aq_Cld to TYPE(HetState) (will hold SO3 + HSO3 sum)
    
    flexchem_mod.F90:
    - Assign values to the HSO3_aq_Cld, SO3_aq_Cld, and TSO3_aq_Cld fields
      of the State_Het object
    
    aerochem.eqn:
    - Add call to HOClUptkByHSO3mAndTropCloud for HOCl + HSO3m rxn
    - Add call to HOClUptkBySO3mmAndTropCloud for HOCl + SO3mm rxn
    
    aerochem_RateLawFuncs.F90:
    - Renamed H%HSO3_conc_Cld to H%HSO3_aq_Cld
    - Renamed H%SO3_conc_Cld to H%SO3_aq_Cld
    - Added function HOClUptkByHSO3mAndTropCloud
    - Added function HOClUptkBySO3mmAndTropCloud
    - Now pass branchSO3 out of subroutine Gam_HOCl_Cld
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    a62fc62 View commit details
    Browse the repository at this point in the history
  7. Rename several fields of State_Het for clarity

    gckpp.kpp:
    - Renamed Br_branch_{CldA,CldC,CldG} to frac_Br_{CldA,CldC,CldG}
    - Renamed Cl_branch_{CldA,CldC,CldG} to frac_Cl_{CldA,CldC,CldG}
    - Renamed HSO3_conc_Cld to HSO3_aq
    - Renamed SO3_conc_Cld to SO3_aq
    - Renamed TSO3_conc_Cld to TSO3_aq
    - Added frac_HSO3_aq
    - Added frac_SO3_aq
    - Updated comments
    
    aerochem_RateLawFuncs.F90:
    gckpp_HetRates.F90
    - Updates for consistency with State_Het fields
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    These updates result in zero diffs w/r/t the prior commit.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 15, 2021
    Configuration menu
    Copy the full SHA
    f933f12 View commit details
    Browse the repository at this point in the history

Commits on Jul 16, 2021

  1. Rename hetchem rate law functions, removing "AndTropCloud"

    We have simplified the names of most hetchem rate law functions by
    removing "andTropCloud" or "AndTropCloud".  Updated both the
    aerochem.eqn and aerochem_RateLawFuncs.F90 modules, and rebuilt
    gckpp_Rates.F90 with KPP 2.3.3_gc.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    7ce3543 View commit details
    Browse the repository at this point in the history
  2. Peel out ClNO2+SALACL, ClNO2+SALCCl, ClNO2+HCl rate law functions

    aerochem.eqn:
    - Add function call to ClNO2uptkBySALACL for ClNO2+SALACL rxn
    - Add function call to ClNO2uptkBySALCCL for ClNO2+SALCCL rxn
    - Add function call to ClNO2uptkByHCl    for ClNO2+HCl rxn
    
    aerochem_RateLawFuncs.F90:
    - Add function ClNO2uptkBySALACL
    - Add function ClNO2uptkBySALCCL
    - Add function ClNO2uptkByHcl
    - Add function ClNO2uptkByBrSALA (for next step)
    - Remove H%is_UCX, it is redundant
    
    flexchem_mod.F90:
    - Updated comments
    
    gckpp.kpp
    - Updated comments
    
    gckpp_Global.F90
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    This update gives zero-diffs w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    b21eb55 View commit details
    Browse the repository at this point in the history
  3. Peel out ClNO2+BrSALA, ClNO2+BrSALC, ClNO2+HBr rate law functions

    aerochem.eqn
    - Add call to ClNO2uptkByBrSALA for ClNO2 + BrSALA hetchem rxn
    - Add call to ClNO2uptkByBrSALC for ClNO2 + BrSALC hetchem rxn
    - Add call to ClNO2uptkByHBr for ClNO2 + HBr hetchem rxn
    
    aerochem_RateLawFuncs.F90:
    - Add function ClNO2uptkByBrSALC
    - Add function ClNO2uptkByHBr
    - Now pass H%pHSSA(1) to the pH argument of ClNO2uptkByBrSALA
    - Now pass H%pHSSA(1) to the pH argument of ClNO2uptkBySALACL
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    This commit gives zero-diffs w/r/t the reference code
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    8b9894f View commit details
    Browse the repository at this point in the history
  4. Partially re-implement ClNO3uptkByH2O function

    aerochem.eqn:
    - Restore call to ClNO3uptkByH2O for ClNO3 + H2O hetchem rxn
    
    aerochem_RateLawFuncs.F90:
    - Temporarily comment out the ClNO3 + H2O uptake in trop cloud
      while investigating the source of numerical differences
    
    gckpp_Rates.F90:
    - Rebuilt with KPP 2.3.3_gc
    
    This results in zero-diffs w/r/t the equivalent modifications in the
    reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    75981e9 View commit details
    Browse the repository at this point in the history
  5. Temporarily disable ClNO3 hetchem functions to look for numerical diffs

    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    e698000 View commit details
    Browse the repository at this point in the history
  6. Replace additional TINY(1e+0_f8) with 0.0_f8 in ucx_mod.F90

    In routine CALC_SLA_GAMMA, we had replaced TINY(1e+0_f8) with 0.0_f8
    but did not catch all instances.  We have now replaced the remaining
    instances.  This should hopefully yield better numerical stability.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    fdb5bc6 View commit details
    Browse the repository at this point in the history
  7. Do not enforce minimum values for Br and Cl concentrations in hetchem

    aerochem.eqn:
    - Restore ClNO3 + BrSALA for testing
    
    aerochem_RateLawFuncs.F90
    - Prevent div-by-zero in routines where gamma uptake coefficients
      are computed.  In many cases if Br or Cl conc is zero, gamma is zero.
    
    gckpp_HetRates.F90:
    - Initialize all Br and Cl fields of State_Het to zero
    - Prevent div by zero in several expressions
    - Avoid setting minimum values of 1.0e-20; set these to zero
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 16, 2021
    Configuration menu
    Copy the full SHA
    dc161fd View commit details
    Browse the repository at this point in the history

Commits on Jul 19, 2021

  1. Restore hetchem rate-law functions for ClNO3

    We have uncommented the rate-law functions for ClNO3.  These result
    in minor numerical noise w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    c16851b View commit details
    Browse the repository at this point in the history
  2. Bug fix: restore commented-out lines of code for ClNO3 rate functions

    Some of the ClNO3 hetchem rate-law functions had commented-out code.
    We have now restored these.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    d4469af View commit details
    Browse the repository at this point in the history
  3. Fix typo in aerochem_RateLawFuncs.F90

    The variable "brBr" should have been renamed to "branchBr" in routine
    ClNO3uptkBySALACL.  Now fixed.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    53ace18 View commit details
    Browse the repository at this point in the history
  4. Re-verify that ClNO3 + SALACL and ClNO3 + SALCCL rate law fns are OK

    We have gone back to first principles and rewritten the algorithms
    for ClNO3 + SALACL and ClNO3 + SALCCL.  These have now ben re-verified
    to give zero diffs w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    2c8883a View commit details
    Browse the repository at this point in the history
  5. Re-confirm ClNO3 + BrSALC rate law function peel-out is correct

    We have re-confirmed that function ClNO3uptkByBrSALC has been
    properly peeled out of gckpp_HetRates.F90.  We obtained identical
    results w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    f5be859 View commit details
    Browse the repository at this point in the history
  6. Re-confirm that ClNO3 + HBr and ClNO3 + HCl rate law funs work properly

    We have tested and confirmed that the ClNO3 + HBr and ClNO3 + HCl
    rate law functions (in KPP/aerochem/aerochem_RateLawFuncs.F90) have
    been implemented properly.  We obtained identical results w/r/t the
    reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    f70ff1d View commit details
    Browse the repository at this point in the history
  7. Partial validation of ClNO3 + H2O rate law function

    We have validated the algorithm contained in the former "HetClNO3"
    routine (excluding the ClNO3 + H2O uptake in tropospheric cloud).
    This results in zero diffs w/r/t the reference code.  Save code
    at this point before proceeding further.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    6c22ae7 View commit details
    Browse the repository at this point in the history
  8. Wrap up validation of ClNO3 hetchem rate law functions

    ClNO3 + H2O and ClNO3 + BrSALA produce small amounts of numerical noise
    when compared to the reference code.  All other ClNO3 rate law functions
    show identical resutls w/r/t the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 19, 2021
    Configuration menu
    Copy the full SHA
    02a3794 View commit details
    Browse the repository at this point in the history

Commits on Jul 20, 2021

  1. Configuration menu
    Copy the full SHA
    5c95a57 View commit details
    Browse the repository at this point in the history

Commits on Jul 23, 2021

  1. Remove obsolete species SO4H1..SO4H4 from aerochem.eqn.

    These have been removed, so no need to declare these.
    yantosca committed Jul 23, 2021
    Configuration menu
    Copy the full SHA
    b683fff View commit details
    Browse the repository at this point in the history
  2. Remove debug printouts in chemistry_mod.F90 and flexchem_mod.F90

    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 23, 2021
    Configuration menu
    Copy the full SHA
    58de99f View commit details
    Browse the repository at this point in the history
  3. Remove unused HpA and HpC from aerochem.eqn; rebuild mechanism

    aerochem.eqn:
    - Remove unused HpA and HpC species from earlier development.  These
      are now unused in the mechanism.
    
    gckpp_Util.F90:
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 23, 2021
    Configuration menu
    Copy the full SHA
    215efb4 View commit details
    Browse the repository at this point in the history
  4. Restore KppDiags diagnostic

    Undid debug output introduced by Mike Long
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 23, 2021
    Configuration menu
    Copy the full SHA
    e8367ec View commit details
    Browse the repository at this point in the history
  5. Comment out HMS rxns in aerochem.eqn to allow for separate validation

    aerochem.eqn
    - We have commented out the three reactions for HMS so that we can
      first validate the KPP updates without introducing new science.
      After that, we can re-introduce the HMS chemistry reactions,
      and do a "with HMS" vs. "without HMS" comparison.
    
    gckpp_*.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 23, 2021
    Configuration menu
    Copy the full SHA
    738c661 View commit details
    Browse the repository at this point in the history

Commits on Jul 26, 2021

  1. Peel out seasalt rxns from gckpp_AqRates.F90 to aerochem_RateLawFuncs…

    ….F90
    
    aerochem_RateLawFuncs.F90
    - Added comments to function AqRate_SALAAL_SO2_O3
    - Updated function AqRate_SALAAL_HCl
    - Added function AqRate_SALAAL_HNO3
    - Added function AqRate_SALCAL_SO2_O3
    - Added function AqRate_SALCAL_HCl
    - Added function AqRate_SALCAL_HNO3
    
    aerochem.eqn
    - Replace K_MT(2) with call to AqRate_SALAAL_HCl
    - Replace K_MT(3) with call to AqRate_SALAAL_HNO3
    - Replace K_MT(4) with call to AqRate_SALCAL_SO2_O3
    - Replace K_MT(5) with call to AqRate_SALCAL_HCl
    - Replace K_MT(6) with call to AqRate_SALCAL_HNO3
    
    gckpp_AqRates.F90
    - Removed
    
    CMakeLists.F90
    - Removed gckpp_AqRates.F90 from CMakeList
    
    flexchem_mod.F90
    - Removed call to routine Init_SULFATE (from gckpp_AqRates.F90)
    - Removed call to routine GET_SEASALT_S (from gckpp_AqRates.F90)
    - Removed call to routine SET_HET (from gckpp_HetRates.F90)
    
    gckpp_HetRates.F90:
    - Removed legacy hetchem rate functions, since most of this functionality
      has now been moved to aerochem_RateLawFuncs.F90
    
    gckpp_Rates.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 26, 2021
    Configuration menu
    Copy the full SHA
    b4e9879 View commit details
    Browse the repository at this point in the history

Commits on Jul 27, 2021

  1. Merge branch 'feature/msl/kpp' into feature/bmy/kpp

    This merge brings in Mike Long's updates since the last merge into
    the current feature/bmy/kpp branch.
    
    NOTE: This code contains HMS chemistry but it is currently disabled
    so that we can benchmark without it.  Then we can simply reactivate
    it by uncommenting out the HMS rxns in aerochem.eqn.
    
    Resolved conflicts in:
    - KPP/aerochem/aerochem.eqn
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 27, 2021
    Configuration menu
    Copy the full SHA
    647d68f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    3d4263f View commit details
    Browse the repository at this point in the history
  3. Clean up aerochem.eqn and update comment in aerochem_RateLawFuncs.F90

    1. Clean up the comments in the sulfate_mod.F90 section of aerochem.eqn.
    2. Fix typo in function AqRate_SALAAL_HNO3 (NITs should be NIT).
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Jul 27, 2021
    Configuration menu
    Copy the full SHA
    586613b View commit details
    Browse the repository at this point in the history

Commits on Aug 16, 2021

  1. Move KPP/aerochem to KPP/fullchem

    We have renamed the aerochem folder to "fullchem" (and all relevant files
    therein) in order to prepare for the merge into the dev branch.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 16, 2021
    Configuration menu
    Copy the full SHA
    e9bcc42 View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2021

  1. Rename "flexchem_mod.F90" to "fullchem_mod.F90"

    Renamed the module GeosCore/flexchem_mod.F90 to GeosCore/fullchem_mod.F90,
    to indicate that this module is for the fullchem mechanism.
    
    There will soon be other KPP-generated chemistry mechanisms so it
    makes sense to separate the interface modules by renaming them.
    
    Also updated all references to flexchem_mod with references
    to fullchem_mod.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 17, 2021
    Configuration menu
    Copy the full SHA
    0da69d4 View commit details
    Browse the repository at this point in the history
  2. Fix issues with the renaming of flexchem_mod.F90 to fullchem_mod.F90

    (1) Need to add fullchem_mod.F90 to the GeosCore/CMakeLists.txt
        and remove flexchem_mod.F90 from there.
    
    (2) chemistry_mod.F90: Corrected a leftover ref to flexchem_mod.F90
    
    (3) cleanup.F90: Cleanup_FlexChem should be Cleanup_FullChem
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 17, 2021
    Configuration menu
    Copy the full SHA
    f60a4c0 View commit details
    Browse the repository at this point in the history
  3. Removed obsolete routines from gckpp_HetRates.F90

    All of the rate law functions have been moved to the module
    fullchem_RateLawFuncs.F90.  Therefore, we have removed much of
    the obsolete code from the gckpp_HetRates.F90 module.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 17, 2021
    Configuration menu
    Copy the full SHA
    8c8dfe8 View commit details
    Browse the repository at this point in the history
  4. Initialize State_Het quantities in new fullchem_HetStateMod.F90 file

    GeosCore/flexchem_mod.F90
    - Removed file, this has been copied to fullchem_mod.F90
    
    GeosCore/fullchem_mod.F90:
    - Routine Set_Kpp_GridBox_Values now calls FullChem_SetHetState
      to initialize fields of the State_Het object.
    
    KPP/fullchem/fullchem_HetStateMod.F90
    - New function, contains the remaining routines from the old module
      gckpp_HetRates.F90 that are used to initialize State_Het.
    
    KPP/fullchem_RateLawFuncs.F90
    - Move comments from the old gckpp_HetRates.F90 here.
    
    KPP/fullchem/CMakeLists.txt
    KPP/fullchem/gckpp_Sulfate.F90
    - Remove references to gckpp_HetRates.F90.
    - NOTE: Some utility functions from the old gckpp_HetRates are now
      stored in rateLawUtilFuncs.F90.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 17, 2021
    Configuration menu
    Copy the full SHA
    01ea06e View commit details
    Browse the repository at this point in the history

Commits on Aug 18, 2021

  1. Structural updates + cleanup before merging updates into dev

    physconstants.F90
    - Remove parameters DO_SULFATEMOD_SEASALT and DO_SULFATEMOD_CLD
    
    state_chm_mod.F90:
    - Add Do_SulfateMod_SeaSalt and Do_SulfateMod_Cld to TYPE(ChmState),
      so that these variables can be passed via State_Chm
    
    gckpp_Sulfate.F90
    fullchem_HetStateMod.F90
    - Removed
    
    fullchem_SulfurChemFuncs.F90
    - Renamed from gckpp_Sulfate.F90
    - Now define IS_FULLCHEM and IS_OFFLINE, which had been declared
      but were never defined
    
    fullchem_HetStateFuncs.F90
    - Renamed from fullchem_HetStateMod.F90
    
    fullchem_mod.F90
    - Use "flexchem" for timers
    - Use State_Chm%Do_SeasaltMod_Cld and State_Chm%Do_SeasaltMod_Seasalt
      instead of parameters from physconstants.F90
    - Call fullchem_SulfurCldChem, renamed from SET_CLD_S
    - Updated comments, trimmed trailing whitespace.
    
    sulfate_mod.F90
    - Use State_Chm%Do_SeasaltMod_Cld and State_Chm%Do_SeasaltMod_SeaSalt
      instead of parameters from physconstants.F90.
    
    KPP/fullchem/CMakeLists.txt
    - Add fullchem_HetStateFuncs.F90, remove fullchem_HetStateMod.F90
    - Add fullchem_SulfurChemFuncs.F90, remove gckpp_Sulfate
    
    NOTE: This commit results in identical results (w/in a tolerance
    of 0.0001%) with respect to the reference code.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    4e7bc6c View commit details
    Browse the repository at this point in the history
  2. KPP/fullchem/gckpp.kpp now links to KPP/fullchem/fullchem.kpp

    For naming consistency, the gckpp.kpp file now links to fullchem.kpp,
    which reflects that this is the .kpp file for the fullchem mechanism.
    This is because the current KPP code uses the filename to define
    the prefix for all of the Fortran generated data files.
    
    This allows us to keep user-modified files for the "fullchem" mechanism
    to have the "fullchem_" prefix, and to have all KPP-generated files
    (except the symlink gckpp.kpp) to have the prefix "gckpp_".
    
    We use the "gckpp_" prefix (i.e. GEOS-Chem-KPP) as a standard naming
    convention for the sake of compilation, because the code needs to
    reference KPP-built code with via USE statements.  Therefore, the
    KPP-generated output files must have the same naming convention
    regardless of what the name of the mechanism (e.g. fullchem, custom, etc.)
    is.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    24ef04f View commit details
    Browse the repository at this point in the history
  3. Update files in KPP/custom to be copies of KPP/fullchem (+ READMEs)

    We have added custom.eqn and custom.kpp (linked to gckpp.kpp) in the
    KPP/custom folder.  In this folder we also link to the modules in
    KPP/fullchem, with the instruction for the user to consider copying
    these files and modifying them if so needed.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    cc66bc3 View commit details
    Browse the repository at this point in the history
  4. Merge branch 'dev-kpp' into dev+dev-kpp

    This merge brings in the KPP modifications (for hetchem rates and
    sulfate chemistry) into the standard development branch.
    
    This will be followed by further updates to the chemistry mechanism
    (to enable HMS rxns, C2H2 + C2H4 rxns, and IONO2 hydrolysis rxns).
    We will make these updates separately in order to better benchmark and
    evaluate them.
    
    Resolved conflicts in:
    - GeosCore/isorropiaII_mod.F90
    - GeosCore/sulfate_mod.F90
    - Headers/state_chm_mod.F90
    - KPP/fullchem/gckpp_HetRates.F90
    - KPP/fullchem/gckpp_Rates.F90
    - run/shared/species_database.yml
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    360744c View commit details
    Browse the repository at this point in the history
  5. Rebuilt gckpp_Rates.F90 with KPP 2.3.3_gc post-merge

    We have rebuilt the fullchem mechanism in order to get a fresh copy
    of the KPP/fullchem/gckpp_Rates.F90 file.  This will ensure that any
    errors from manual merging will be eliminated.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    c8b0e4f View commit details
    Browse the repository at this point in the history
  6. Add error check: Don't compute HMS reaction rates if HMS is not defined

    We have bracketed the computation of the HMS reaction rates with
    an IF statement that makes sure that HMS is a define species
    before proceeding.
    
    Also added some minor cosmetic edits in fullchem_SulfurChemFuncs.F90
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    80b2263 View commit details
    Browse the repository at this point in the history

Commits on Aug 25, 2021

  1. Bug fix: Make sure LWC is not small enough to blow up divisions

    KPP/fullchem/fullchem_SulfurChemFuncs.F90:
    - Do not enter the IF block where sulfur production is computed from
      aqueous SO2 rxns in cloud unless LWC > 1e-20.  This prevents divisions
      from blowing up.
    - Also rearrange the main IF block to remove the ELSE.  Make sure that
      HPLUS, State_Chm%HSO3_aq, and State_Chm%SO3_aq are initialized
      at the top of the routine.  If the IF block is not called then
      these will be set to default values.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 25, 2021
    Configuration menu
    Copy the full SHA
    090c7a9 View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2021

  1. Flush denormal or negative values in QL and QI to zero

    Sometimes the QL and QI (liquid water and ice mixing ratio) can have
    very small (i.e. < 1e-30) or negative values.  We now flush these to
    zero.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 26, 2021
    Configuration menu
    Copy the full SHA
    d202fe6 View commit details
    Browse the repository at this point in the history
  2. Fix div-by-zero bugs in KPP rate law function routine CloudHet2R

    We have put in calls to SafeDiv in order to prevent division by zero
    in routine CloudHet2R.  This is a utility routine in the new
    KPP module fullchem_SulfurChemFuncs.F90.
    
    Also made some minor structural updates (removing an ELSE block,
    cleanup of whitespace, etc.)
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 26, 2021
    Configuration menu
    Copy the full SHA
    4d123e0 View commit details
    Browse the repository at this point in the history

Commits on Aug 27, 2021

  1. Bug fix: O2 + HO2 = H2O2 + O2 should be HO2 + HO2 = H2O2 + O2

    fullchem.eqn
    - O2 + HO2 = H2O2 + O2 is incorrect, should be HO2 + HO2 = H2O2 + O2.
      This bug caused a ~60% decrease in CO2.
    
    gckpp_Function.F90
    gckpp_Jacobian.F90
    gckpp_Monitor.F90
     - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 27, 2021
    Configuration menu
    Copy the full SHA
    325446e View commit details
    Browse the repository at this point in the history
  2. Add initial modifications for aciduptake mechanism

    Updated the KPP/CMakeLists.txt file to compile code in the
    KPP/aciduptake folder if -DMECH=aciduptake is selected.
    
    Also added the initial .kpp, .eqn and rate law function files
    for the aciduptake simulation.  Some are linked to fullchem.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 27, 2021
    Configuration menu
    Copy the full SHA
    8857b48 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2021

  1. Bug fix: compute sulfur chem rxn rates before Set_Kpp_Gridbox_Values

    In fullchem_mod.F90, the routine Set_Kpp_Gridbox_Values (which copies
    various data for hetchem rxn rate computations) was being called before
    the sulfur chemistry reaction rates were computed.  Because of this,
    the State_Chm%HSO3_aq and State_Chm%SO3_aq arrays were left as zero when
    they should have been populated with proper values.
    
    The fix is to rearrange the order of the calls in fullchem_mod.F90.
    We have created a new routine (Set_Sulfur_Chem_Rates) that calls
    down to the KPP/fullchem/fullchem_SulfurChemFuncs.F90 module to
    compute sulfur chemistry reaction rates and the State_Chm%HSO3_aq
    and State_Chm%SO3_aq arrays.  This now ensures that all data is computed
    before passing to the KPP chemistry solver.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Aug 30, 2021
    Configuration menu
    Copy the full SHA
    11f8b06 View commit details
    Browse the repository at this point in the history

Commits on Aug 31, 2021

  1. Fixed errors in aciduptake.eqn, rebuilt KPP mechanism

    aciduptake.eqn:
    - Added H2SO4 species
    - Added SO4D1, SO4D2, SO4D3, SO4D4 species
    - Added NITD1, NITD2, NITD3, NITD4 species
    - Updated comments
    
    gckpp*_.F90:
    - Rebuilt with KPP 2.3.3_gc
    yantosca committed Aug 31, 2021
    Configuration menu
    Copy the full SHA
    c7550e2 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    465de33 View commit details
    Browse the repository at this point in the history

Commits on Sep 1, 2021

  1. Add CMake and structural updates for the aciduptake simulation

    CMake updates:
    (1) Added KPP/aciduptake/CMakeLists.txt
    (2) Added if block in KPP/CMakeLists.txt for add_subdirectory based
        on the value of MECH.  If MECH=fullchem, configure KPP/fullchem, etc.
    (3) In all KPP/*/CMakeLists.txt, removed multiple target names.
        e.g. KPPFirstPass_fullchem, KPPFirstPass_custom, and
        KPPFirstPass_aciduptake is just KPP_FirstPass, and similarly
        for the KPP target.
    (4) GeosCore/CMakeLists.txt references the KPP target.
    (5) Headers/CMakeLists.txt references the KPP_FirstPass target.
    
    Other code updates:
    (1) Broke off acid dust uptake rate-law functions into a new module
        KPP/aciduptake/aciduptake_DustChemFuncs.F90.
    (2) KPP/aciduptake folder has symbolic links to the other fullchem_*.F90
        and rateLawUtilFuncs.F90 modules in the KPP/fullchem folder.
    (3) Added a stub module KPP/fullchem/aciduptake_DustChemFuncs.F90
        since this needs to be called from GeosCore/fullchem_mod.F90.
    (4) Updated comments, added formatting.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 1, 2021
    Configuration menu
    Copy the full SHA
    039d2e4 View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2021

  1. Restore K_MT(1:6) for aqueous sulfur chemistry rates

    KPP/fullchem/fullchem.eqn
    KPP/aciduptake/aciduptake.eqn
    - Restored K_MT(1:6) for aqueous sulfur chemistry rxns
    
    KPP/fullchem/fullchem.kpp
    KPP/aciduptake/aciduptake.kpp
    - Added K_MT(6) as a threadprivate array
    - Changed K_CLD(20) to K_CLD(6), since there are only 6 slots used
    
    KPP/fullchem/CMakeLists.txt
    - Add a stub module aciduptake_DustChemFuncs.F90 for fullchem mech.
    
    KPP/fullchem/fullchem_SulfurChemFuncs.F90
    - Moved function SET_SEASALT_S from gckpp_AqRates.F90 here,
      and renamed to fullchem_SulfurAqchem
    - Renamed function fullchem_InitSulfurCldChem to fullchem_InitSulfurChem
    
    KPP/fullchem/fullchem_RateLawFuncs.F90
    - Commented out the AqRate_* functions
    
    KPP/fullchem/rateLawUtilFuncs.F90
    - Added whitespace in Ars_L1K variable declaration
    
    
    KPP/fullchem/gckpp_*.F90
    KPP/fullchem/gckpp.map
    KPP/aciduptake/gckpp_*.F90
    KPP/aciduptake/gckpp.map
    - Rebuilt with KPP 2.2.3_gc
    
    GeosCore/fullchem_mod.F90
    - Call renamed routine fullchem_SulfurAqChem
    - Call renamed routine fullchem_InitSulfurChem
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 8, 2021
    Configuration menu
    Copy the full SHA
    cf94ce6 View commit details
    Browse the repository at this point in the history

Commits on Sep 9, 2021

  1. Comment out species database debug output

    This was left turned on during KPP debugging work.  Now disabled.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    1c603c3 View commit details
    Browse the repository at this point in the history
  2. Temporarily revert zeroing negative QI and QL in flexgrid_read_mod.F90

    We have reverted zeroing very small negative values of QI and QL in
    flexgrid_read_mod.F90, in order to replicate the 13.2.0 benchmark
    output during KPP debugging.  We will re-introduce this later.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    462a678 View commit details
    Browse the repository at this point in the history
  3. Updated the criteria for calling SEASALT_CHEM in sulfate_mod.F90

    The call to SEASALT_CHEM (which computes AlkA and AlkC, which then gets
    stored as State_Chm%SSAlk(:,:,:,1) and State_Chm%SSAlk(:,:,:,2)) was
    not being executed when sulfate chemistry is handled by KPP.  This
    resulted in KPP rate-law functions getting zero seasalt alkalinity,
    which adversely impacted the computation of rxn rates for e.g. BrSALA.
    
    We have fixed this situation by calling SEASALT_CHEM if:
    
    (1) Sulfate chemistry is handled in sulfate_mod, or
    (2) Sulfate chemistry is handled by KPP, and FullRun=FALSE
    
    We will eventually abstract the computation of cloud pH and seasalt
    alkalinity out of sulfate_mod.F90, but this commit fixes the issue
    for now.
    
    Also updated some comments.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    0c0795c View commit details
    Browse the repository at this point in the history
  4. Make sure SALAAL and SALCAL concs are updated in sulfate_mod.F for KPP

    When sulfate chemistry is handled by KPP, the AlkA and AlkC values
    in CHEM_SO2 (in sulfate_mod.F90) needed to be copied to the
    State_Chm%Species array when Fullrun = FALSE.  Otherwise SALAAL and
    SALCAL won't have the proper initial values before KPP chemistry.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 9, 2021
    Configuration menu
    Copy the full SHA
    6c8d26d View commit details
    Browse the repository at this point in the history

Commits on Sep 14, 2021

  1. Add cosmetic changes for clarity to fullchem_SulfurChemFuncs.F90

    Now use keyword arguments for calling AQCHEM_SO2 and HET_DROP_CHEM,
    which have long argument lists.  Also added whitespace to Fahey-Seinfeld
    decision algorithm IF block to increase legibility.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 14, 2021
    Configuration menu
    Copy the full SHA
    7f8357d View commit details
    Browse the repository at this point in the history
  2. Bug fix: Correct typo in ClNO2uptkByHBr hetchem rate-law function

    The wrong fraction (H%frac_Cl_CldG) was used.  This should have been
    H%frac_Br_CldG, which is the ratio of Br concentration in cloud to
    total Br concentration (Cloud + fine seasalt + coarse seasalt).
    Now fixed.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 14, 2021
    Configuration menu
    Copy the full SHA
    6cf24ba View commit details
    Browse the repository at this point in the history

Commits on Sep 15, 2021

  1. Remove unit conversion for State_Chm%HSO3_aq and State_Chm%SO3aq

    The unit conversion of HSO3aq and SO3aq from [M] to [molec/cm3] is
    not necessary.  This causes differences in hetchem routines in
    w/r/t the reference code.
    
    Also removed some debug print statements.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    a5703c0 View commit details
    Browse the repository at this point in the history
  2. Add State_Het%debugBox to flag a box for debug print in rate-law func…

    …tions
    
    KPP/fullchem/fullchem.kpp
    KPP/aciduptake/aciduptake.kpp
    - Add debugBox field to TYPE(HetState)
    
    KPP/fullchem/HetStateFuncs.F90
    - Set State_Het%debugBox = .FALSE. by default.  One can edit this
      to trigger as TRUE if we are at a given (I,J,L) location.
    
    KPP/fullchem/fullchem_RateLawFuncs.F90
    - Update comments in HOClUptkByHSO3m and HOClUptkBySO3mm functions
    
    KPP/fullchem/gckpp_Global.F90
    KPP/aciduptake/gckpp_Global.F90
    - Rebuilt with KPP 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    8b42ad7 View commit details
    Browse the repository at this point in the history
  3. Remove error trap for low concentrations from KIIR1LTD rate function

    KPP/fullchem/rateLawUtilFuncs:
    - The line "IF ( concEduct < 100.0_dp ) RETURN" was evidently intended
      to prevent division by zero.  However, this will flush rate law
      computations to zero for very small concentrations.
    - Given that we now use the Is_SafeDiv and SafeDiv functions to prevent
      div-by-zero errors, this error trap is no longer necessary.
      Comment it out for now.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    d94ff95 View commit details
    Browse the repository at this point in the history
  4. Remove HMS from input.geos advected species list

    We will add this back once the HMS reactions are activated in KPP.
    For now, remove this in order to avoid a missing species error.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    b46b8b5 View commit details
    Browse the repository at this point in the history
  5. Fix for computational efficiency in routine Gam_HOCl_Cld

    Moved the computation of M_X and c_avg into the IF ( k_tot > 0.0_dp )
    block.  This will skip computation of these quantities if the total
    rate k_tot is zero -- then we just exit.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 15, 2021
    Configuration menu
    Copy the full SHA
    56fb8b7 View commit details
    Browse the repository at this point in the history

Commits on Sep 16, 2021

  1. Use new hetrates, S sea salt chem in KPP, but old S in-cloud chemistry

    Headers/state_chm_mod.F90
    - Set Do_SulfateMod_Cld = T always
    - Set Do_SulfateMod_Seasalt = T if it is a fullchem simulation
    
    GeosCore/fullchem_mod.F90:
    - Add subroutine PrintFirstTimeInfo to print an informational
      message about which options are being used
    
    KPP/fullchem/fullchem.eqn:
    KPP/aciduptake/aciduptake.eqn
    - Disable reactions using K_CLD(1:6)
    - Disable reactions for HMS
    
    KPP/fullchem/gckpp_*.F90
    -  Rebuilt with KPP 2.3_3_gc
    
    KPP/aciduptake/gckpp_*.F90
    - Removed for present.  This will be activated at a later date
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    9778ab8 View commit details
    Browse the repository at this point in the history
  2. Modify createRunDir.sh to copy restart file with HSO3m and SO3mm species

    We have modified the createRunDir.sh script so that restart file
    GEOSCHEM_RESTARTS/v2021-09/GEOSChem.restart.fullchem.20190701_0000z.nc4
    will be copied to full-chemistry run directories.  This was necessary
    because we needed to include new species HSO3m and SO3mm.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    fc6aa12 View commit details
    Browse the repository at this point in the history
  3. Bug fix: Restore SO4H1, SO4H2, SO4H3, SO4H4 and S cld chem ins sulfat…

    …e_mod
    
    It is not possible to use the hetchem reactions with HSO3mm and SO3mm
    while computing sulfur cloud and seasalt chemistry in sulfate_mod.F90.
    
    Therefore, we have restored the SO4H1, SO4H2, SO4H3, and SO4H4
    species in fullchem.eqn and updated the rate law functions
    for HOCl and HOBr accordingly.
    
    GeosCore/fullchem_mod.F90
    - Comment out references to ind_HSO3m and ind_SO3mm, as HSO3m and
      SO3mm species are not included in KPP.
    
    Headers/state_chm_mod.F90
    - Set Do_SulfateMod_Seasalt = TRUE and Do_SulfateMod_Cld = TRUE.
      This will ensure that sulfur seasalt & cloud chemistry will
      still be done by sulfate_mod.F90, while we evaluate the
      KPP sulfur chemistry code.
    
    KPP/fullchem/fullchem.kpp
    KPP/aciduptake/aciduptake.kpp
    - Add fupdateHOBr and fupdateHOCl to TYPE(HetState)
    
    KPP/fullchem/fullchem.eqn
    KPP/aciduptake/aciduptake.eqn
    - Restore SO4H1, SO4H2, SO4H3, SO4H4 species and reactions
    
    KPP/fullchem/fullchem_HetStateFuncs.F90
    - Copy fupdateHOBr and fupdateHOCL from State_Chm to State_het
    
    KPP/fullchem/fullchem_RateLawFuncs.F90
    - Comment out functions HOBrUptkByHSO3m and HOBrUptkBySO3mm
    - Comment out functions HOClUptkByHSO3m and HOClUptkBySO3mm
    - Add functions HOBrHetSO4H1 and HOBrHetSO4H2
    - Add functions HOClHetSO4H4 and HOBrHetSO4H3
    - Remove AqRate_* functions, these are now done in
      fullchem_SulfurChemFuncs.F90, stored in K_MT(1:6).
    
    KPP/fullchem/gckpp.map
    KPP/fullchem/gckpp_*.F90
    - Rebuilt with KPP version 2.3.3_gc
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    10334df View commit details
    Browse the repository at this point in the history
  4. Comment out the aciduptake option in KPP/aciduptake/CMakeLists.txt

    We will restore this once the sulfur chemistry is able to
    be computed within KPP.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    5594a6c View commit details
    Browse the repository at this point in the history
  5. Fix compilation issue for APM in fullchem_SulfurChemFuncs.F90

    In KPP/fullchem/fullchem_SulfurChemFuncs.F90, there is an unnecessary
    reference to apm_mod.F90.  We have removed this.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 16, 2021
    Configuration menu
    Copy the full SHA
    f6fbf95 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2021

  1. In createRunDir.sh, restore original restart file copy command

    In this commit, we are not adding new species HSO3- and SO3--, so
    we do not need to copy the restart file from the v2021-09 folder
    of the restart file path.  Therefore we have restored the original
    restart file copy command in run/GCClassic/createRunDir.sh.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    4ff24b5 View commit details
    Browse the repository at this point in the history
  2. Add fix for metals simulations in GEOS-Chem integration tests

    The metals simulations were running for an entire month when executing a
    full integration test. A fix has been added to commonFunctionsForTests.sh
    to automatically modify the end date of metals simulations so they only
    run for 20 minutes.
    
    Signed-off-by: Melissa Sulprizio <mpayer@seas.harvard.edu>
    msulprizio authored and yantosca committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    ce43e75 View commit details
    Browse the repository at this point in the history
  3. Remove KPP/fullchem/Makefile and KPP/fullchem/Makefile_gckpp

    These are not needed.
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    e1a904b View commit details
    Browse the repository at this point in the history
  4. Minor updates in species_mod.F90 and KPP/build_mechanism.sh

    Headers/species_mod.F90
    - Removed IS_FORGE tag in Species derived type
    
    KPP/build_mechanism.sh
    - Remove Makefile_gckpp after each time KPP rebuilds the gckpp_* files.
      Makefile_gckpp is for GNU Make but we now use CMake.
    
    KPP/aciduptake/Makefile_gckpp
    - Removed
    
    Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
    yantosca committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    825b172 View commit details
    Browse the repository at this point in the history